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;
}

posted on 2011-06-26 21:18  宇宙吾心  阅读(322)  评论(0)    收藏  举报

导航