记录编号 |
157886 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[USACO Jan15] 牛的路线2 |
最终得分 |
100 |
用户昵称 |
wolf. |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.060 s |
提交时间 |
2015-04-10 23:54:16 |
内存使用 |
0.31 MiB |
显示代码纯文本
#include<iostream>
#include<fstream>
#include<bitset>
#include<vector>
#include<deque>
#include<map>
#include<set>
#include<queue>
#include<string>
#include<algorithm>
#include<cmath>
#include<ctime>
#include<cstdio>
using namespace std;
#if defined wolf
const string ok="OK";
const string kk=" ";
ofstream nnew("cowrouteb.in",ios::app);
ifstream fin("cowrouteb.in");
#define fout cout
#define Endl endl
#else
ifstream fin("cowrouteb.in");
ofstream fout("cowrouteb.out");
#endif
const int IMAX=99999999;
int A,B;
int main(){
int n;
fin>>A>>B>>n;
vector<int> AA;
vector<int> BB;
vector<int> ans;
AA.resize(10005,IMAX);
BB=AA;
ans=AA;
//cout<<A<<kk<<B<<endl;
for(int i=0;i!=n;++i){
int cost,np;
int bega=-1,begb=-1;
fin>>cost>>np;
vector<int> pp;
for(int j=0;j!=np;++j){
int r;
fin>>r;
pp.push_back(r);
if(r==A){
bega=j;
}
if(r==B){
begb=j;
}
}
if(bega!=-1){
for(int j=bega+1;j<pp.size();++j){
if(AA[pp[j]]>cost){
AA[pp[j]]=cost;
}
}
}
for(int j=0;j<begb;++j){
if(BB[pp[j]]>cost){
BB[pp[j]]=cost;
}
}
/*for(int i=0;i!=10;++i){
cout<<AA[i]<<" ";
}
cout<<endl;
for(int i=0;i!=10;++i){
cout<<BB[i]<<" ";
}
cout<<endl;
cout<<"----"<<endl;*/
}
int mmin=IMAX;
AA[A]=0;
BB[B]=0;
for(int i=0;i!=AA.size();++i){
mmin=min(mmin,AA[i]+BB[i]);
}
if(mmin==IMAX){
fout<<-1;
return 0;
}
fout<<mmin;
//-------------------------*/
#if defined wolf
cout<<endl<<(double)clock()/CLOCKS_PER_SEC<<'s'<<endl;
system("pause");
#endif
return 0;
}
//Designed by wolf
//Fri Apr 10 2015