2016-06-17 3 views
0

Я сделал простой код, чтобы взять число вершин и количество ребер в качестве входных данных, взять каждое ребро и добавить его в список этой вершины. Однако я не понимаю.Список смежности графика, дающий неправильный вывод

#include <iostream> 
#include <list> 

using namespace std; 

int main() 
{ 
    int t; 
    cin>>t; 
    while(t--) { 
     int n,m; // number of vertices and edges 
     cin>>n>>m; 
     list<int> a[n]; 
     list<int>::iterator it; 
     while(m--) { 
      int x,y; 
      cin>>x>>y; // one edge x & y are vertices 
      a[x-1].push_back(y-1); // -1 because it array is 0 index based 
     } 
     for(int i=0;i<n;i++) { 
      for(it= a[i].begin();it!=a[i].end();it++) { 
       cout<<*it<<" "; 
      } 
      cout<<endl; 
     } 
    } 
    return 0; 
} 

Пусть говорят мой тестовый вход случай:

1 
3 3 // number of edges and vertices 
1 2 
2 3 
3 1 

Ожидаемый результат должен быть:

2 3 
1 2 
2 1 

ответ

0

Понял.

#include <iostream> 
#include <list> 

using namespace std; 

int main() 
{ 
    int t; 
    cin>>t; 
    while(t--) { 
     int n,m; 
     cin>>n>>m; 
     list<int> a[n]; 
     list<int>::iterator it; 
     while(m--) { 
      int x,y; 
      cin>>x>>y; 
      a[x-1].push_back(y); 
      a[y-1].push_back(x); 
     } 
     for(int i=0;i<n;i++) { 
      for(it= a[i].begin();it!=a[i].end();it++) { 
       cout<<*it<<" "; 
      } 
      cout<<endl; 
     } 
    } 
    return 0; 
} 
Смежные вопросы