#include<bits/stdc++.h>
#define Infinity 100000
using namespace std;
int mat[15][15],koyta_node,Path[15][15];
void Floyd()
{
for(int k=1; k<=koyta_node; k++)
{
for(int i=1; i<=koyta_node; i++)
{
for(int j=1; j<=koyta_node; j++)
{
if(mat[i][j]>mat[i][k]+mat[k][j])
{
mat[i][j]=mat[i][k]+mat[k][j];
Path[i][j]=Path[k][j];
}
}
}
}
}
void Print_Path(int s,int e)
{
if(Path[s][e]==s)
{
printf(" %d",Path[s][e]);
return;
}
else
{
Print_Path(s,Path[s][e]);
printf(" %d",Path[s][e]);
}
return;
}
int main()
{
int to,i,j,x,delay,koyta_route,start,nd,test=0;
while(scanf("%d",&koyta_node)&&koyta_node)
{
for(i=1; i<=koyta_node; i++)
{
for(j=1; j<=koyta_node; j++)
{
if(i!=j)
mat[i][j]=Infinity;
}
}
for(i=1; i<=koyta_node; i++)
{
for(j=1; j<=koyta_node; j++)
{
Path[i][j]=i;
}
}
for(x=1; x<=koyta_node; x++)
{
scanf("%d",&koyta_route);
while(koyta_route--)
{
scanf("%d%d",&to,&delay);
mat[x][to]=delay;
}
}
Floyd();
scanf("%d%d",&start,&nd);
printf("Case %d: Path =",++test);
Print_Path(start,nd);
printf(" %d;",nd);
printf(" %d second delay\n",mat[start][nd]);
}
return 0;
}
#define Infinity 100000
using namespace std;
int mat[15][15],koyta_node,Path[15][15];
void Floyd()
{
for(int k=1; k<=koyta_node; k++)
{
for(int i=1; i<=koyta_node; i++)
{
for(int j=1; j<=koyta_node; j++)
{
if(mat[i][j]>mat[i][k]+mat[k][j])
{
mat[i][j]=mat[i][k]+mat[k][j];
Path[i][j]=Path[k][j];
}
}
}
}
}
void Print_Path(int s,int e)
{
if(Path[s][e]==s)
{
printf(" %d",Path[s][e]);
return;
}
else
{
Print_Path(s,Path[s][e]);
printf(" %d",Path[s][e]);
}
return;
}
int main()
{
int to,i,j,x,delay,koyta_route,start,nd,test=0;
while(scanf("%d",&koyta_node)&&koyta_node)
{
for(i=1; i<=koyta_node; i++)
{
for(j=1; j<=koyta_node; j++)
{
if(i!=j)
mat[i][j]=Infinity;
}
}
for(i=1; i<=koyta_node; i++)
{
for(j=1; j<=koyta_node; j++)
{
Path[i][j]=i;
}
}
for(x=1; x<=koyta_node; x++)
{
scanf("%d",&koyta_route);
while(koyta_route--)
{
scanf("%d%d",&to,&delay);
mat[x][to]=delay;
}
}
Floyd();
scanf("%d%d",&start,&nd);
printf("Case %d: Path =",++test);
Print_Path(start,nd);
printf(" %d;",nd);
printf(" %d second delay\n",mat[start][nd]);
}
return 0;
}
0 comments: (+add yours?)
Post a Comment