比赛 |
20161215 |
评测结果 |
AAAAAAAAAA |
题目名称 |
牛的路线2 |
最终得分 |
100 |
用户昵称 |
kxxy |
运行时间 |
0.057 s |
代码语言 |
C++ |
内存使用 |
0.39 MiB |
提交时间 |
2016-12-16 20:47:15 |
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int A,B,N;
int timea[10010],timeb[10010],ans=9999999,maxx=-1,minn=9999999;
int main()
{
freopen("cowrouteb.in","r",stdin);
freopen("cowrouteb.out","w",stdout);
scanf("%d%d%d",&A,&B,&N);
int C,D;
for(int i=1;i<=10000;i++)
{
timea[i]=9999999;
timeb[i]=9999999;
}
int now=0;
timea[A]=0;
timeb[B]=0;
for(int i=1;i<=N;i++)
{
now=0;
scanf("%d%d",&C,&D);
int node[510];
for(int j=1;j<=D;j++)
{
scanf("%d",&node[j]);
maxx=max(maxx,node[j]);
minn=min(minn,node[j]);
if(node[j]==B)
for(int k=1;k<=j-1;k++)
timeb[node[k]]=min(timeb[node[k]],C);
if(now==1)
timea[node[j]]=min(C,timea[node[j]]);
if(node[j]==A)
now=1;
}
}
for(int i=minn;i<=maxx;i++)
ans=min(ans,timea[i]+timeb[i]);
if(ans!=9999999)
printf("%d",ans);
else
printf("-1");
return 0;
}