poj 3411
有意思的dfs
代码:
#include<iostream>
#include<fstream>
#include<vector>
using namespace std;
struct node{
int c,p,r,data;
};
vector<node> edge[11];
int n,m;
int v[11];
int ans;
void solve(int s,int w){
int i,j,k;
if(w>ans) return;
if(s==n)
{
ans=w;
return ;
}
for(i=0;i<edge[s].size();i++)
{
node a=edge[s][i];
if(v[a.data]<=3)
{
v[a.data]++;
if(v[a.c]>0) solve(a.data,a.p+w);
else
solve(a.data,a.r+w);
v[a.data]--;
}
}
}
void read(){
// ifstream cin("in.txt");
int i,j,k;
cin>>n>>m;
for(i=1;i<=m;i++)
{
node a;
cin>>j>>a.data>>a.c>>a.p>>a.r;
edge[j].push_back(a);
}
ans=100000000;
solve(1,0);
if(ans==100000000)
cout<<"impossible"<<endl;
else
cout<<ans<<endl;
}
int main(){
read();
return 0;
}
浙公网安备 33010602011771号