1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
|
#include<cstring> #include<algorithm> using namespace std;
int a[55][55];
int (int i,int n){ int v[55]; memset(v,0,sizeof(v)); int d[55]; for(int j=1;j<=n;j++) d[j]=j==i?0:n*n; for(int j=1;j<=n;j++){ int x,m=n*n; for(int k=1;k<=n;k++)if(!v[k]&&d[k]<=m)m=d[x=k]; v[x]=1; for(int k=1;k<=n;k++)d[k]=min(d[k],d[x]+a[x][k]); } int ans=0; for(int j=1;j<=n;j++) ans+=d[j]; return ans; }
int main(){ int T; scanf("%d",&T); while(T--){ int n,m; int ans[55]={0}; scanf("%d%d",&n,&m); for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++) a[i][j]=n; a[i][i]=0; } while(m--){ int u,v; scanf("%d%d",&u,&v); a[v][u]=a[u][v]=1; } for(int i=1;i<=n;i++) ans[i]=dijkstra(i,n); int best=1,mini=n*n; for(int i=1;i<=n;i++){ if(ans[i]<mini){ mini=ans[i]; best=i; } } printf("%dn",best); } return 0; }
|
近期评论