PTA 06-圖3 六度空間 (30分)
阿新 • • 發佈:2019-02-18
#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; }