#include<iostream>
#include <string.h>
using namespace std;
//弗洛伊德算法可以算最大路径,dj算法就不行……BFS好像也不行?
int dis[105][105];
int main()
{
int n;
int t =0;
while(cin>>n,n)
{
int s;
int a,b;
memset(dis,-1,sizeof(dis));
cin>>s;
while(cin>>a>>b,a)
dis[a][b] = 1;
int i,j;
for(int k=1;k<=n;k++)
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(dis[i][j]!=-1 && dis[j][k]!=-1)
dis[i][k] = max(dis[i][k],dis[i][j]+dis[j][k]);
int max_ = -1;
int ans_node = 0 ;
for(i=1;i<=n;i++)
{
if(max_<dis[s][i])
{
max_ = dis[s][i];
ans_node = i;
}
}
cout<<"Case "<<++t<<": The longest path from "<<s<<" has length "
<<max_<<", finishing at "<<ans_node<<"."<<endl<<endl;
}
return 0;
}
uva10000
最新推荐文章于 2018-06-20 00:52:10 发布