abinash_hstu

BFS

Jan 16th, 2016
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.40 KB | None | 0 0
  1. #include<iostream>
  2. #include<vector>
  3. #include<queue>
  4. #include<cstdio>
  5. #define MAX 10000
  6. #define READ(f) freopen(f, "r", stdin)
  7. using namespace std;
  8. int main()
  9. {
  10.     int i,j,node,edges,n1,n2,source,loop,u,v,max;
  11.     vector<int> edge[MAX],dis[MAX];
  12.     vector<int> cost[MAX];
  13.     scanf("%d%d",&node,&edges);
  14.     //int in[MAX]={0},out[MAX]={0};
  15.     for(i=1; i<=edges; i++)
  16.     {
  17.         scanf("%d%d",&n1,&n2);
  18.         edge[n1].push_back(n2);
  19.         edge[n2].push_back(n1);
  20.         cost[n1].push_back(n2);
  21.         cost[n2].push_back(n1);
  22.     }
  23.     scanf("%d",&source);
  24.     max=1;
  25.     queue<int>Q;
  26.     Q.push(source);
  27.     int taken[100]= {0},distance[100];
  28.     taken[source]=1;
  29.     distance[source]=0;
  30.     dis[0].push_back(source);
  31.     while(!Q.empty())
  32.     {
  33.         u=Q.front();
  34.         for(i=0; i<edge[u].size(); i++)
  35.         {
  36.             v=edge[u][i];
  37.             if(!taken[v])
  38.             {
  39.                 Q.push(v);
  40.                 taken[v]=1;
  41.                 distance[v]=distance[u]+1;
  42.                 if(max<distance[v])max=distance[v];
  43.                 dis[distance[v]].push_back(v);
  44.             }
  45.         }
  46.         Q.pop();
  47.     }
  48.     printf("Maximum Distance : %d\n",max);
  49.     for(i=0; i<=max; i++)
  50.     {
  51.         printf("%d distance node are ",i);
  52.         for(j=0; j<dis[i].size(); j++)
  53.             printf("%d ",dis[i][j]);
  54.         printf("\n");
  55.     }
  56.     return 0;
  57. }
Advertisement
Add Comment
Please, Sign In to add comment