比赛 20161215 评测结果 AAAAAAAAAA
题目名称 牛的路线2 最终得分 100
用户昵称 AAAAAAAAAA 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2016-12-16 20:13:36
显示代码纯文本
#include<cstdio>
namespace IO{
	char buf[1<<15],*fs,*ft;
	inline char gc(){return (fs==ft&&(ft=(fs=buf)+fread(buf,1,1<<15,stdin),fs==ft))?0:*fs++;}
	inline int qr(){
		int x=0,ch=gc();
		while(ch<'0'||ch>'9'){ch=gc();}
		while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+ch-'0';ch=gc();}
		return x;}
}using namespace IO;
using namespace std;
/***********************************************************************************************/
int min1(int x,int y){
	return x<y? x:y;}
int sb(){
	freopen ("cowrouteb.in","r",stdin);
	freopen ("cowrouteb.out","w",stdout);
	int A,B,N,i,j,num,cost,temp1,temp2,ans=99999999,flag1=0,flag2=0;
	int d1[11000],d2[11000],city[11000];//d1[i]表示从起点到i的最小值,d2[i]表示从i到终点的最小值
	A=qr();B=qr();N=qr();
	for(i=1;i<=11000;i++){
		d1[i]=99999999;
		d2[i]=99999999;}
	d1[A]=0;d2[B]=0;
	for(i=0;i<N;i++){
		flag1=0;flag2=0;
		cost=qr();num=qr();
		for(j=0;j<num;j++){
			city[j]=qr();
			if(city[j]==A){temp1=j;flag1=1;}
			if(city[j]==B){temp2=j;flag2=1;}}
		if(flag1==1){
		for(j=temp1;j<num;j++){
			d1[city[j]]=min1(d1[city[j]],cost);}}
		if(flag2==1){
		for(j=temp2;j>=0;j--){
			d2[city[j]]=min1(d2[city[j]],cost);}}}
	for(i=0;i<11000;i++){
		ans=min1(ans,d1[i]+d2[i]);}
	if(ans==99999999){
		printf("-1");}
	else{
	printf("%d",ans);}
	return 0;
}
int chh=sb();
int main(){
	return 0;
}