记录编号 134091 评测结果 AAAAAAAAAA
题目名称 聚会 最终得分 100
用户昵称 Gravatar水中音 是否通过 通过
代码语言 C++ 运行时间 0.017 s
提交时间 2014-10-29 13:52:35 内存使用 2.62 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
using namespace std;
int qwq=0x7fffffff;
int to[100010]={0},ne[100010]={0},w[100010]={0},head[1001]={0},reto[100010]={0},rene[100010]={0},rehead[1001]={0},A[100000]={0},zui[1001]={0},rezui[1001]={0};
int j=0,k,i,p,m,n,zj1,zj2,zj3,ans=0;
void init()
{
	scanf("%d%d%d",&n,&m,&k);
	for(i=1;i<=m;i++)
	{
		scanf("%d%d%d",&zj1,&zj2,&zj3);
		j++;
		to[j]=zj2;
		ne[j]=head[zj1];
		head[zj1]=j;
		w[j]=zj3;
		reto[j]=zj1;
		rene[j]=rehead[zj2];
		rehead[zj2]=j;
	}
	for(i=1;i<=n;i++)
	{
		zui[i]=qwq;
		rezui[i]=zui[i];
	}
	zui[k]=0;
	rezui[k]=0;
}
void firstspfa()
{
	A[0]=1;
	A[1]=k;
	while(A[0])
	{
		zj1=A[ A[0] ];A[0]--;
		for(p=head[zj1];p;p=ne[p])
		{
			zj2=zui[zj1]+w[p];
			if(zui[ to[p] ]>zj2)
			{
				zui[ to[p] ]=zj2;
				A[0]++;
				A[ A[0] ]=to[p];
			}
		}
	}
}
void secondspfa()
{
	A[0]=1;
	A[1]=k;
	while(A[0])
	{
		zj1=A[ A[0] ];A[0]--;
		for(p=rehead[zj1];p;p=rene[p])
		{
			zj2=rezui[zj1]+w[p];
			if(rezui[ reto[p] ]>zj2)
			{
				rezui[ reto[p] ]=zj2;
				A[0]++;
				A[ A[0] ]=reto[p];
			}
		}
	}
}
int main()
{
	freopen("partyb.in","r",stdin);
	freopen("partyb.out","w",stdout);
	init();
	firstspfa();
	secondspfa();
	for(i=1;i<=n;i++)
	if(zui[i]!=qwq&&rezui[i]!=qwq)
	{
		zj1=zui[i]+rezui[i];
		if(zj1>ans)ans=zj1;
	}
	printf("%d\n",ans);
	return 0;
}