记录编号 348719 评测结果 AAAAAAAA
题目名称 旅行计划 最终得分 100
用户昵称 GravatarZwoi_John Price 是否通过 通过
代码语言 C 运行时间 0.004 s
提交时间 2016-11-14 15:43:04 内存使用 0.33 MiB
显示代码纯文本
#include<stdio.h>
int path[101]={0},mp[101][101]={0},inf=99999999,dis[101],m,n,v;
void find(int x)
{
	if (x==v) printf("%d ",x);
	else
	{
		find(path[x]);
		printf("%d ",x);
	}
}
int main()
{
	int i,min,k,k1,j,mk[101]={0},t2,t1,t3;
	freopen("djs.in","r",stdin);
	freopen("djs.out","w",stdout);
	scanf("%d %d %d",&n,&m,&v);
	
	for (i=0;i<n;i++)
	{
		for (j=0;j<n;j++)
		{
			mp[i][j]=inf;
		}
	}
	for (i=1;i<=m;i++)
	{
		scanf("%d %d %d",&t1,&t2,&t3);
		mp[t1][t2]=t3;
	}
	for (i=0;i<n;i++) dis[i]=inf;
	dis[v]=0;
	
	for (i=0;i<=n-1;i++)
	{
		min=inf+1;
		for (j=0;j<n;j++)
		{
			if ((mk[j]!=1)&&(dis[j]<min))
			{
				min=dis[j];
				k=j;
			}
		}
		mk[k]=1;
		for (k1=0;k1<n;k1++)
		{
			if ((mp[k][k1]+dis[k]<dis[k1])&&(k!=k1))
			{
				dis[k1]=mp[k][k1]+dis[k];
				path[k1]=k;
			}
			
		}
	}
	for (i=0;i<n;i++)
	{
		printf("%d:\n",i);
		if ((i==v)||(dis[i]==inf)) printf("no\n");
		else
		{
			printf("path:");
			find(i);
			printf("\n");
			printf("cost:%d\n",dis[i]);
		}
	}
	
	fclose(stdin);
	fclose(stdout);
	return 0;
}