C++ 如果图形以邻接列表的形式给出,如何扫描用户输入?
我有一个输入,格式如下图所示。我正在使用矢量图[200]读取输入。让我们假设程序读取第一行和第一列的第一个数字(如图所示)。现在我想添加连接到第一个节点的所有顶点,如图[]。向后推_(同一行中的下一个整数),以此类推。但我应该在什么时候停止读取特定节点的输入(图[I])。因为在读取第一行之后,我需要将顶点添加到另一个图[I+1]中节点的对应列表中。如果你不明白我的问题,请看一下我的代码C++ 如果图形以邻接列表的形式给出,如何扫描用户输入?,c++,input,graph,tree,C++,Input,Graph,Tree,我有一个输入,格式如下图所示。我正在使用矢量图[200]读取输入。让我们假设程序读取第一行和第一列的第一个数字(如图所示)。现在我想添加连接到第一个节点的所有顶点,如图[]。向后推_(同一行中的下一个整数),以此类推。但我应该在什么时候停止读取特定节点的输入(图[I])。因为在读取第一行之后,我需要将顶点添加到另一个图[I+1]中节点的对应列表中。如果你不明白我的问题,请看一下我的代码 #include <bits/stdc++.h> using namespace std; ve
#include <bits/stdc++.h>
using namespace std;
vector<int> graph[201];
int main()
{
int n=2,i,node,temp;
for(i=1;i<=n;i++)
{
cin>>node;
while(scanf("%d",&temp)!=EOF/*What is the correct conditon to stop loop*/)
{
graph[node].push_back(temp);
}
}
return 0;
}
假设您想逐行阅读,您可以执行以下操作:
#include <bits/stdc++.h>
using namespace std;
vector<int> graph[201];
int main(){
string line;
int n=2,i,node,temp;
for(i=1;i<=n;i++){
getline(cin, line);
istringstream in( line );
in>>node;
while(in>>temp){
graph[node].push_back(temp);
}
}
return 0;
}
#包括
使用名称空间std;
向量图[201];
int main(){
弦线;
int n=2,i,节点,温度;
对于(i=1;i>节点;
while(在>>温度中){
图形[节点]。推回(临时);
}
}
返回0;
}
假设您想逐行阅读,您可以执行以下操作:
#include <bits/stdc++.h>
using namespace std;
vector<int> graph[201];
int main(){
string line;
int n=2,i,node,temp;
for(i=1;i<=n;i++){
getline(cin, line);
istringstream in( line );
in>>node;
while(in>>temp){
graph[node].push_back(temp);
}
}
return 0;
}
#包括
使用名称空间std;
向量图[201];
int main(){
弦线;
int n=2,i,节点,温度;
对于(i=1;i>节点;
while(在>>温度中){
图形[节点]。推回(临时);
}
}
返回0;
}
请不要显示文本文件的屏幕截图。只需将其包括在问题中(最好包括一个更简化的版本,比如说每行三行和5个相邻部分)。现在我添加了问题中的输入格式,请查看…@Martin Bonner@πάνταῥεῖ c++@Narendra-Sure中允许使用cin和scanf,但通常首选使用cin
。如果您想了解有关scanf()
的返回值的更多信息,可以在@πάνταῥεῖ 他想逐行读取整数。直到文件结束,所以while(cin>>temp)
将不起作用。请不要显示文本文件的屏幕截图。只需将其包含在问题中(最好包含一个更简化的版本,例如每行三行和五个相邻).现在我添加了有问题的输入格式,请查看…@Martin Bonner@πάνταῥεῖ c++@Narendra-Sure中允许使用cin和scanf,但通常首选使用cin
。如果您想了解有关scanf()
的返回值的更多信息,可以在@πάνταῥεῖ 他想逐行读取整数,直到文件结束,所以while(cin>>temp)
不起作用。