POJ-3411-Paid Roads
来源:互联网 发布:淘宝宝贝涨价被降权了 编辑:程序博客网 时间:2024/06/03 20:16
dfs,用邻接表,有重边
#include <iostream>#include <stdio.h>#include <string.h>#include <algorithm>#include <queue>#include <vector>#include <map>#include <cmath>#include <stdlib.h>using namespace std;const double PI = acos(-1.0);const double eps = 1e-8;const int MAX = 1e1+10;const int mod = 1e9+7;int a, b, c, p, r, n, m, ans, vis[11], top;struct edge{ int p, r, b, next, c;}lxt[MAX];int adj[MAX];void add(int a, int b, int c, int p, int r){ lxt[top].b = b; lxt[top].c = c; lxt[top].p = p; lxt[top].r = r; lxt[top].next = adj[a]; adj[a] = top++;}void dfs(int pre, int cost){ if(pre==n) { ans = min(ans, cost); return; } if(cost>=ans)return; for(int i = adj[pre]; i!=-1; i=lxt[i].next) { c = lxt[i].c; p = lxt[i].p; r = lxt[i].r; int b = lxt[i].b;//迷之bug,必须定义成局部,不然会wa if(vis[b]<=3) { vis[b]++; if(vis[c]>0)dfs(b,cost+p); else dfs(b,cost+r); vis[b]--; } }}int main(){ cin>>n>>m; top = 0; ans = mod; memset(vis, 0, sizeof(vis)); memset(adj, -1, sizeof(adj)); while(m--) { cin>>a>>b>>c>>p>>r; add(a,b,c,p,r); } vis[1] = 1; dfs(1, 0); if(ans!=mod)cout<<ans<<endl; else cout<<"impossible"<<endl; return 0;}
0 0
- Poj 3411 Paid Roads
- POJ 3411 Paid Roads
- poj 3411 Paid Roads
- POJ 3411 Paid Roads
- poj 3411 Paid Roads
- poj 3411 Paid Roads
- POJ 3411 - Paid Roads
- POJ-3411-Paid Roads
- POJ 3411 Paid Roads
- POJ 3411 Paid Roads
- POJ 3411--Paid Roads
- poj 3411 Paid Roads
- POJ 3411 Paid Roads
- POJ-3411 Paid Roads
- poj 3411 Paid Roads
- POJ 3411 Paid Roads
- POJ 3411 Paid Roads
- poj 3411 Paid Roads
- 深入了解ListView(3) — 一天一点源码
- [杜教筛] 51Nod 1237 最大公约数之和 V3
- 内核移植问题集锦
- delete 和 delete [] 的真正区别
- hdu 1166 敌兵布阵(单点更新)
- POJ-3411-Paid Roads
- [杜教筛] 51Nod 1238 最小公倍数之和 V3
- CentOS 使用ifconfig没有显示ip
- Flink运行时之合久必分的特定任务
- 9447 CTF 2015: Search Engine分析(未完待续)
- NSURLSession - NSURLSessionTask 和 delegate
- 1194_八进制
- centos6.7 x64搭建tmate server
- C8-1 复数加减乘除