比赛 20101110 评测结果 AAWWWEEEET
题目名称 奶牛派对 最终得分 20
用户昵称 Citron酱 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2010-11-10 21:03:45
显示代码纯文本
#include <fstream>

#define I_F "party.in"
#define O_F "party.out"
#define MAX 1001

using namespace std;

int n,x;
int map[MAX][MAX];
int ans;

void Input();
int Spfa(int x, int y);
void Search();
void Output();

int main()
{
	Input();
	Search();
	Output();
	return 0;
}

void Input()
{
	ifstream fin(I_F);
	long m,i;
	fin>>n>>m>>x;
	int a,b;
	for (i=0; i<m; i++)
	{
		fin>>a>>b;
		fin>>map[a][b];
	}
	fin.close();
}

int Spfa(int x, int y)
{
	int ss[10000]={x};
	int m[MAX]={0};
	int i,j=0,k=1;
	for (; j<k; j++)
		for (i=1; i<=n; i++)
			if ((map[ss[j]][i]>0)&&((m[ss[j]]+map[ss[j]][j]<m[i])||(m[i]==0)))
			{
				m[i]=m[ss[j]]+map[ss[j]][i];
				ss[k++]=i;
			}
	return m[y];
}

void Search()
{
	int i,t;
	for (i=1; i<=n; i++)
		if (i!=x)
		{
			t=Spfa(i,x)+Spfa(x,i);
			if (t>ans)
				ans=t;
		}
}

void Output()
{
	ofstream fout(O_F);
	fout<<ans<<'\n';
	fout.close();
}