记录编号 464260 评测结果 AAAAAAAA
题目名称 旅行计划 最终得分 100
用户昵称 GravatarRegnig Etalsnart 是否通过 通过
代码语言 C++ 运行时间 0.000 s
提交时间 2017-10-25 15:33:11 内存使用 0.00 MiB
显示代码纯文本
#include<cstdio>
#include<cstring>
#include<queue>
#define syy myson
using namespace std;
const int INF=1000000000;
int n,m,V,cnt,head[10001],inque[101]={0},dist[101],path[101],i;
struct Edge
{
	int to,next,w;
}e[10001];
void add(int u,int v,int w)
{
	e[cnt].to=v;
	e[cnt].w=w;
	e[cnt].next=head[u];
	head[u]=cnt++;
}
void spfa()
{
	queue<int>q;
	for(i=0;i<n;i++)dist[i]=INF;
	q.push(V);
	inque[V]=1;
	dist[V]=0;
	while(!q.empty())
	{
		int u=q.front();
		q.pop();
		for(i=head[u];~i;i=e[i].next)
		{
			int v=e[i].to,w=e[i].w;
			if(dist[v]>=dist[u]+w)
			{
				dist[v]=dist[u]+w;
				path[v]=u;
				if(!inque[v])
				{
					q.push(v);
					inque[v]=1;
				}
			}
		}
		inque[u]=0;
	}
}
int Main()
{
	freopen("djs.in","r",stdin);freopen("djs.out","w",stdout);
	memset(head,-1,sizeof(head));
	scanf("%d%d%d",&n,&m,&V);
	while(m--)
	{
		int u,v,w;
		scanf("%d%d%d",&u,&v,&w);
		add(u,v,w);
	}
	spfa();
	for(i=0;i<n;i++)
	{
		printf("%d:\n",i);
		if((dist[i]>=INF)||(i==V)){printf("no\n");continue;}
		int p=i,P[101]={0},num=0;
		while(p!=V)
		{
			P[++num]=p;
			p=path[p];
		}
		printf("path:%d ",V);
		for(int j=num;j>=1;j--)printf("%d ",P[j]);
		printf("\ncost:%d\n",dist[i]);
	}
	return 0;
}
int main(){;}
int syy=Main();