Advertisement
niamul64

////uva 1056 - Degrees of Separation

Jun 11th, 2019
194
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.01 KB | None | 0 0
  1. ////uva   1056 - Degrees of Separation
  2.  
  3. #include<bits/stdc++.h>
  4. using namespace std;
  5. vector<int > vect[51];
  6. int maxDeg;
  7.  
  8.  
  9.  
  10. bool checkConnected(bool arr[],int people)
  11. {
  12.     int i,j,k;
  13.     queue<int > q;
  14.     q.push(1);
  15.     arr[1]=0;
  16.     int node;
  17.     int degree[people+1];
  18.     degree[1]=0;
  19.     while(!q.empty())
  20.     {
  21.         node=q.front();
  22.         q.pop();
  23.         if(vect[node].size()>0)
  24.  
  25.         for(i=0; i<vect[node].size(); i++)
  26.         {
  27.             if(arr[vect[node][i]])
  28.             {
  29.  
  30.                 arr[vect[node][i]] = 0;
  31.  
  32.                 q.push(vect[node][i]);
  33.                 degree[vect[node][i]]=degree[node]+1;
  34.                  if(maxDeg< degree[vect[node][i]])
  35.         maxDeg= degree[vect[node][i]];
  36.  
  37.             }
  38.         }
  39.     }
  40.  
  41.  
  42.     for(i=1; i<=people; i++)
  43.     {
  44.  
  45.         if(arr[i]!=0)
  46.             return 1;
  47.     }
  48.  
  49.     return 0;
  50. }
  51.  
  52. void BFS(bool arr[],int node,int p)
  53. {
  54.  
  55.     int i,j,k;
  56.     queue<int > q;
  57.     q.push(node);
  58.     arr[node]=0;
  59.  
  60.     int degree[p+1];
  61.     degree[node]=0;
  62.     while(!q.empty())
  63.     {
  64.         node=q.front();
  65.         q.pop();
  66.         if(vect[node].size()>0)
  67.  
  68.         for(i=0; i<vect[node].size(); i++)
  69.         {
  70.             if(arr[vect[node][i]])
  71.             {
  72.  
  73.                 arr[vect[node][i]] = 0;
  74.  
  75.                 q.push(vect[node][i]);
  76.                 degree[vect[node][i]]=degree[node]+1;
  77.                 if(maxDeg< degree[vect[node][i]])
  78.         maxDeg= degree[vect[node][i]];
  79.  
  80.             }
  81.         }
  82.     }
  83.  
  84.  
  85.  
  86.  
  87.  
  88. }
  89.  
  90.  
  91. int main ()
  92. {
  93.  
  94.  
  95.     int p,r,i,j,k,l;
  96.  
  97.     int cou;
  98.     int network=1;
  99.  
  100.  
  101.     bool fir=0;
  102.  
  103.     map<string,int> setVal;
  104.     while(scanf("%d%d",&p,&r)==2 )
  105.     {
  106.         if(r==0){
  107.  
  108.             break;
  109.         }
  110.         maxDeg=-1;
  111.         string v1,v2;
  112.         int vv1,vv2;
  113.  
  114.         cou=1;
  115.  
  116.         for(i=1; i<=r; i++)
  117.         {
  118.             cin>>v1>>v2;
  119.  
  120.             if(setVal[v1]==0)
  121.             {
  122.                 setVal[v1]=cou;
  123.                 cou++;
  124.  
  125.             }
  126.  
  127.             if(setVal[v2]==0)
  128.             {
  129.                 setVal[v2]=cou;
  130.                 cou++;
  131.             }
  132.  
  133.             vv1=setVal[v1];
  134.             vv2=setVal[v2];
  135.             vect[vv2].push_back(vv1);
  136.             vect[vv1].push_back(vv2);
  137.  
  138.         }
  139.  
  140.         bool arr[p+1];
  141.         for(i=1; i<=p; i++)
  142.             arr[i]=1;
  143.         bool check= checkConnected(arr,p);
  144.  
  145.  
  146.  
  147.  
  148.  
  149.         if(check==1)
  150.         {
  151.             printf("Network %d: DISCONNECTED\n\n",network++);
  152.             for(i=1; i<=p; i++)
  153.             {
  154.                 vect[i].clear();
  155.  
  156.             }
  157.             setVal.clear();
  158.             continue;
  159.         }
  160.         for(j=2; j<=p; j++)
  161.         {
  162.             for(i=1; i<=p; i++)
  163.                 arr[i]=1;
  164.  
  165.             BFS(arr,j,p);
  166.  
  167.         }
  168.          printf("Network %d: %d\n\n",network++,maxDeg);
  169.             for(i=1; i<=p; i++)
  170.             {
  171.                 vect[i].clear();
  172.             }
  173.             setVal.clear();
  174.  
  175.     }
  176.  
  177.  
  178.  
  179.  
  180.     return 0;
  181. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement