#include<iostream> using namespace std; int main() { int i,j,k,N,vtexnum,bian; int a[100][100]; int max=0; int NO=0; cin>>N; while(N--) { NO++; max=0; cin>>vtexnum>>bian; for(k=0;k<vtexnum;k++) for(i=0;i<vtexnum;i++) { a[k][i]=1000; if(k==i)a[k][i]=0;//初始化要对角要取0; } for(i=0;i<bian;i++) {cin>>j>>k; a[j][k]=1; a[k][j]=1; } for(k=0;k<vtexnum;k++) for(i=0;i<vtexnum;i++) for(j=0;j<vtexnum;j++) if(a[i][k]+a[k][j]<a[i][j]) a[i][j]=a[i][k]+a[k][j]; cin>>i>>j; for(k=0;k<vtexnum;k++) if(max<a[i][k]+a[k][j]) max=a[i][k]+a[k][j]; cout<<"Case "<<NO<<": "<<max<<endl; } return 0; } 主要是floyd的应用。。。。