再用邻接矩阵存图直播吃屎的
#include<iostream>
#include<cmath>
#include<string>
#include<queue>
#include<stack>
#include<cstring>
#include<vector>
using namespace std;
int gaga=0x3f3f3f3f;
int n,m,zouguo[11];
vector<int> pp[11],rr[11],cc[11],tut[11];
int jieguo=gaga;
//int tou=0;
//int tutut[50];
void dfs(int xianzai,int muqian)
{
//cout<<" shangge "<<shangge<<" xianzai "<<xianzai<<" zouguo[xianzai] "<<zouguo[xianzai]<<" muqian "<<muqian<<endl;
if(xianzai==n)
{
jieguo=min(jieguo,muqian);
//for(int a=1;a<=tutut[0];a++)cout<<tutut[a]<<" ";
// cout<<endl;
// cout<<muqian<<endl;
return ;
}
for(int a=0;a<tut[xianzai].size();a++)
{
int lu;
if(zouguo[tut[xianzai][a]]>5)continue;
if(zouguo[cc[xianzai][a]])lu=pp[xianzai][a];
else lu=rr[xianzai][a];
zouguo[tut[xianzai][a]]++;
// tutut[++tutut[0]]=a;
dfs(tut[xianzai][a],lu+muqian);
// --tutut[0];
zouguo[tut[xianzai][a]]--;
}
}
int main()
{
cin>>n>>m;
int q,w,e,r,t;
// memset(pp,0x3f,sizeof(pp));
//memset(rr,0x3f,sizeof(rr));
for(int a=1;a<=m;a++)
{
cin>>q>>w>>e>>r>>t;
tut[q].push_back(w);
pp[q].push_back(r);
rr[q].push_back(t);
cc[q].push_back(e);
}
zouguo[1]=1;
dfs(1,0);
if(jieguo!=gaga)cout<<jieguo<<endl;
else cout<<"impossible"<<endl;
return 0;
}