vector实现邻接表的两种方式

来源:互联网 发布:java日期选择控件 编辑:程序博客网 时间:2024/05/29 13:02

方式一:

#include<stdio.h>#include<vector>using namespace std;#define SIZE 1000vector<int> adj[1000];int n,m;void init(){ scanf("%d%d",&n,&m);  int i,j; int a,b; for(i=1;i<=n;i++) {  adj[i].clear();  } for(i=1;i<=m;i++) {  scanf("%d%d",&a,&b);  adj[a].push_back(b);  adj[b].push_back(a);  }}void print(){ int i; vector<int>::iterator j,iend;  for(i=1;i<=n;i++) {  iend=adj[i].end();  printf("dian %d:",i);  for(j=adj[i].begin();j!=iend;j++)  {   printf("%d ",*j);   }   printf("\n"); }}int main(){ int t; scanf("%d",&t); while(t--) {    init();   print(); }  return 0; }

方式二:

#include<stdio.h>#include<vector>using namespace std;#define SIZE 1000vector<vector<int> >adj(SIZE);int n,m;void init(){ scanf("%d%d",&n,&m);  int i,j; int a,b; for(i=1;i<=n;i++) {  adj[i].clear(); //清除  } for(i=1;i<=m;i++) {  scanf("%d%d",&a,&b);  adj[a].push_back(b);  adj[b].push_back(a);  }}void print(){ int i; int j;  for(i=1;i<=n;i++) {    printf("dian %d:",i);  for(j=0;j<adj[i].size();j++)  {   printf("%d ",adj[i][j]);   }   printf("\n"); }}int main(){ int t; scanf("%d",&t); while(t--) {    init();   print(); }  return 0; }


原创粉丝点击