记录编号 433120 评测结果 AAAAAAAAAA
题目名称 [USACO Feb07] 奶牛聚会 最终得分 100
用户昵称 GravatarAys 是否通过 通过
代码语言 C++ 运行时间 0.012 s
提交时间 2017-08-04 21:21:31 内存使用 0.35 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<iostream>
#include<vector>
#include<cstring>
using namespace std;
int n,m,x;
struct lu{
	int to,value;
};
vector<lu> a1[1005],a2[1005];
int dis1[1005],dis2[1005],book1[1005],book2[1005];
void sc(){
	scanf("%d%d%d",&n,&m,&x);
	for(int i=0;i<m;i++){
		int ai,bi,ti;scanf("%d%d%d",&ai,&bi,&ti);
		lu q;q.to=bi;q.value=ti;
		a1[ai].push_back(q);
		q.to=ai;
		a2[bi].push_back(q);
	}
	memset(dis1,127,sizeof(dis1));
	memset(dis2,127,sizeof(dis2));
}
void d1(){
	dis1[x]=0;book1[x]=1;
	vector<lu>::iterator it;
	for(it=a1[x].begin();it!=a1[x].end();it++){
		dis1[it->to]=it->value;
	}
	for(int i=1;i<n;i++){
		int minn=22222222,mindian=0;
		for(int j=1;j<=n;j++){
			if(book1[j]==0&&dis1[j]<minn){
				minn=dis1[j];mindian=j;
			}
		}
		book1[mindian]=1;
		for(it=a1[mindian].begin();it!=a1[mindian].end();it++){
			if(dis1[mindian]+it->value<dis1[it->to])
			dis1[it->to]=dis1[mindian]+it->value;
		}
	}
}
void d2(){
	dis2[x]=0;book2[x]=1;
	vector<lu>::iterator it;
	for(it=a2[x].begin();it!=a2[x].end();it++){
		dis2[it->to]=it->value;
	}
	for(int i=1;i<n;i++){
		int minn=22222222,mindian=0;
		for(int j=1;j<=n;j++){
			if(book2[j]==0&&dis2[j]<minn){
				minn=dis2[j];mindian=j;
			} 
		}
		book2[mindian]=1;
		for(it=a2[mindian].begin();it!=a2[mindian].end();it++){
			if(dis2[mindian]+it->value<dis2[it->to])
			dis2[it->to]=dis2[mindian]+it->value;
		} 
	}
}
int main(){
	freopen("sparty.in","r",stdin);
	freopen("sparty.out","w",stdout);
	sc();
	dis1[x]=0;dis2[x]=0;
	d1();
	d2();
	int tot=0;
	for(int i=1;i<=n;i++){
		tot=max(tot,dis1[i]+dis2[i]);
	}
	printf("%d",tot);
	return 0;
}