普通的Floyd了分分秒可以水过,结果在submit前删调试段落的时候把程序本体给删了吃了两个WA……
1 #include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 const int INF=3000000; 5 using namespace std; 6 const int MAXN=10000; 7 int len[MAXN][MAXN]; 8 int f[MAXN][MAXN]; 9 10 int n,m; 11 12 int main() 13 { 14 scanf("%d%d",&n,&m); 15 for (int i=0;i<n;i++) 16 { 17 for (int j=0;j<n;j++) f[i][j]=INF; 18 f[i][i]=0; 19 } 20 21 for (int i=0;i<m;i++) 22 { 23 int k; 24 int tempa[MAXN]; 25 scanf("%d",&k); 26 for (int j=0;j<k;j++) 27 { 28 scanf("%d",&tempa[j]); 29 tempa[j]--; 30 for (int l=0;l<=j-1;l++) 31 { 32 f[tempa[j]][tempa[l]]=1; 33 f[tempa[l]][tempa[j]]=1; 34 } 35 } 36 } 37 38 for (int i=0;i<n;i++) 39 for (int j=0;j<n;j++) 40 for (int k=0;k<n;k++) 41 f[i][j]=min(f[i][j],f[i][k]+f[k][j]); 42 43 int ans=INF; 44 for (int i=0;i<n;i++) 45 { 46 int sum=0; 47 for (int j=0;j<n;j++) sum+=f[i][j]; 48 if (sum<ans) ans=sum; 49 } 50 cout<<(int)(ans*100/(n-1))<<endl; 51 return 0; 52 }
时间: 2024-10-25 10:23:57