如果图形以邻接表的形式给出,如何扫描用户输入

How to scan input from user if graph is given in form of adjancency list?

本文关键字:何扫描 扫描 输入 用户 图形 如果      更新时间:2023-10-16

我有一个输入格式如下图所示。我使用向量图[200]来读取输入。假设程序读取第一行和第一列的第一个数字(如图所示)。现在我想添加所有连接到第一个节点的顶点,就像图[1]。Push_back(同一行中的下一个整数)等等。但是什么时候我应该停止读取特定节点(graph[I])的输入。因为在读取第一行之后,我需要将顶点添加到另一个图[I +1]到node的相应列表中。如果你不明白我的问题,请看看我的代码。

#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;
 }

输入格式:

1   37  79  164 155 32  87  39  113 15  18  78  175 140 200 4   160 97  191 100 91  20  69  198 196 
20  123 134 10  141 13  12  43  47  3   177 101 179 77  182 117 116 36  103 51  154 162 128 30  
3   48  123 134 109 41  17  159 49  136 16  130 141 29  176 2   190 66  153 157 70  114 65  173 104 194 54  
14  91  171 118 125 158 76  107 18  73  140 42  193 127 100 84  121 60  81  99  80  150 55  1   35  23  93  
5   193 156 102 118 175 39  124 119 19  99  160 75  20  112 37  23  145 135 146 73  35  
60  155 56  52  120 131 160 124 119 14  196 144 25  75  76  166 35  87  26  20
7   156 185 178 79  27  52  144 107 78  22  71  26  31  15  56  76  112 39  8   113 93  
8   185 155 171 178 108 64  164 53  140 25  100 133 9   52  191 46  20  150 144 39  62  131 42  119 127 31  7   
9   91  155 8   160 107 132 195 26  20  133 39  76  100 78  122 127 38  156 191 196
10  190 184 154 49  2   182 173 170 161 47  189 101 153 50  30  109 177 148 179 16  163 116 13  90  185 
111 123 134 163 41  12  28  130 13  101 83  77  109 114 21  82  88  74  24  94  48  33  
12  161 109 169 21  24  36  65  50  2   101 159 148 54  192 88  47  11  142 43  70  182 177 179 189 194 33  
13  161 141 157 44  83  90  181 41  2   176 10  29  116 134 182 170 165 173 190 159 47  82  111 142 72  154 110 21  103 130 11  33  138 152 
and so on...
这是我的输入格式
的截图

假设您想逐行读取,您可以这样做:

#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;
 }