记录编号 |
433120 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[USACO Feb07] 奶牛聚会 |
最终得分 |
100 |
用户昵称 |
Ays |
是否通过 |
通过 |
代码语言 |
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;
}