比赛 平凡的题目 评测结果 TWWWT
题目名称 平凡的皮卡丘 最终得分 0
用户昵称 asddddd 运行时间 2.001 s
代码语言 C++ 内存使用 0.78 MiB
提交时间 2015-11-03 10:47:14
显示代码纯文本
//
//  main.cpp
//  both
//
//  Created by Qing Liu on 15/11/3.
//  Copyright © 2015年 Qing Liu. All rights reserved.
//

#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <cstring>
#include <vector>
#include <queue>
#define maxn 41000
using namespace std;
struct edge{
    int to,cost,rev;
    bool ava;
};
vector<edge>G[maxn];
void addedge(int u,int v,int ac,int bc){
    G[u].push_back((edge){v,ac,(int)G[v].size(),true});
    G[v].push_back((edge){u,bc,(int)G[u].size()-1,true});
}
int ans=-1;
void DFS(int s,int tot){
    if (s==1&&tot!=0){
        if (ans==-1) {
            ans=tot;
        }
        else
            ans=min(ans, tot);
        return ;
    };
    if(ans!=-1&&tot>=ans)
        return;
    for (int i=0; i<G[s].size(); i++) {
        edge &e=G[s][i];
        if (e.ava) {
            e.ava=0;
            G[e.to][e.rev].ava=0;
            DFS(e.to,tot+e.cost);
            e.ava=1;
            G[e.to][e.rev].ava=1;
        }
    }
    return ;
}
int main() {
    freopen("both.in", "r", stdin);
    freopen("both.out", "w", stdout);
    int n,m;
    cin>>n>>m;
    if (n>20000) {
        cout<<-1;
        return 0;
    }
    for (int i=0; i<m; i++) {
        int from,to,ac,bc;
        cin>>from>>to>>ac>>bc;
        addedge(from, to, ac, bc);
    }
    DFS(1, 0);
    cout<<ans;
    return 0;
}