1. 程式人生 > >PTA 06-圖3 六度空間 (30分)

PTA 06-圖3 六度空間 (30分)

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<vector>
#include<queue>
#include<algorithm>
using namespace std;
#define maxsize 10001
#define  MIN -10001

int num=0,size=0;
void BFS(int index,vector<int> v[])
{
    int visit[maxsize]={0};
  queue<int> q;
    if(!visit[index])
    {visit[index]=1;
    }
 q.push(index);
 q.push(-1);
 int t;
 int finally=-1;
 while(!q.empty()){
              t=q.front();
              q.pop();
             if(t==-1)
              {num++;
              continue;
              }
   for(int i=0;i<v[t].size();i++)
     {if(!visit[v[t][i]]&&num<6)
         {
             visit[v[t][i]]=1;
             q.push(v[t][i]);
            size++;
    }
      else if(!visit[v[t][i]]&&num==6)
      {
          visit[v[t][i]]=1;
        size++;
      }



 }
 if(q.front()==-1)
  q.push(-1);
  }
}

int main()
{
   int n,m;
  vector<int> v[maxsize];
   scanf("%d%d",&n,&m);
  for(int i=0;i<m;i++)
  {
        int x,y;
    scanf("%d%d",&x,&y);
   v[x].push_back(y);
    v[y].push_back(x);
    }


for(int i=1;i<=n;i++)
    {
            size=1;
            num=1;
   BFS(i,v);
  printf("%d: %.2lf%%\n",i,(size*100.0/n));
    }


	return 0;
}