| 记录编号 | 
        157743 | 
        评测结果 | 
        AAAAAAAAAA | 
    
    
        | 题目名称 | 
        1927.[USACO Jan15] 牛的路线2 | 
        最终得分 | 
        100 | 
            
    
    
        | 用户昵称 | 
         Ra-xp | 
        是否通过 | 
        通过 | 
    
    
        | 代码语言 | 
        C++ | 
        运行时间 | 
        0.233 s  | 
    
    
        | 提交时间 | 
        2015-04-09 22:11:21 | 
        内存使用 | 
        1.31 MiB  | 
        
    
    
    
    		显示代码纯文本
		
		#include<algorithm>
#include<iostream>
#include<fstream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<vector>
#include<stack>
using namespace std;
class T
{
public:
	int ib, ie;
	int much, num;
	int way[510];
}
plane[510];
int main()
{
	freopen("cowrouteb.in","r",stdin);
	freopen("cowrouteb.out","w",stdout);
	int n, b, e, i, j, k, l, min=999999;
	bool T1, T2;
	cin>>b>>e>>n;
	for(i=0;i<n;i++)
	{
		T1=false;
		T2=false;
		plane[i].ib=-2;
		plane[i].ie=-2;
		cin>>plane[i].much>>plane[i].num;
		for(j=0;j<plane[i].num;j++)
		{
			cin>>plane[i].way[j];
			if(plane[i].way[j]==b)
			{
				plane[i].ib=j;
			}
			if(plane[i].way[j]==b && T2!=true)
			{
				T1=true;
			}
			if(plane[i].way[j]==e)
			{
				T2=true;
				plane[i].ie=j;
			}
			if(T1==true && T2==true)
			{
				plane[i].ib=-1;
				plane[i].ie=-1;
				if(min>plane[i].much)
				{
					min=plane[i].much;
				}
			}
		}
	}//cout<<min<<endl;
	
	/*for(i=0;i<n;i++)
	{
		cout<<i<<' '<<plane[i].num<<endl;
		for(j=0;j<plane[i].num;j++)
		{
			cout<<plane[i].way[j]<<' ';
		}cout<<endl;
		cout<<'('<<plane[i].ib<<' '<<plane[i].ie<<')'<<endl;
	}*/
	
	for(i=0;i<n;i++)
	{
		if(plane[i].ib>=0)
		{
			for(j=0;j<n;j++)
			{
				if(plane[j].ie>0 && j!=i)
				{
					for(k=plane[i].ib+1;k<plane[i].num;k++)
					{
						for(l=0;l<plane[j].ie;l++)
						{
							if(plane[i].way[k]==plane[j].way[l])
							{
								//cout<<i<<' '<<j<<' '<<'('<<plane[i].much+plane[j].much<<')'<<endl;
								if(min>plane[i].much+plane[j].much)
								{
									min=plane[i].much+plane[j].much;
								}
								break;
							}
						}
					}
				}
			}
		}
	}
	if(min==999999)cout<<-1<<endl;
	else cout<<min<<endl;
	return 0;
}