poj 3411 Paid Roads(DFS)
来源:互联网 发布:网络安全法的特点 编辑:程序博客网 时间:2024/06/06 08:46
题目链接:http://poj.org/problem?id=3411
题意:有n座城市,编号1~n,从a到b如果已经经过c城市,则需要p费用,否则需要r费用,问从1到n的最小费用是多少。
①DFS:
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<vector>using namespace std;const int INF=0x3f3f3f3f;const int maxn=15;int n,m;int a[maxn],b[maxn],c[maxn],p[maxn],r[maxn];int vis[maxn];int ans;struct node{int a,b,c,p,r;}road[maxn];void dfs(int t,int fee){if(t==n&&fee<ans){ans=fee;return ;}if(vis[t]>3) return ;for(int i=1;i<=m;i++){if(road[i].a==t){vis[road[i].b]++;if(vis[road[i].c])dfs(road[i].b,fee+road[i].p);elsedfs(road[i].b,fee+road[i].r);vis[road[i].b]--;}}}int main(){#ifndef ONLINE_JUDGEfreopen("test.in","r",stdin);freopen("test.out","w",stdout);#endifwhile(~scanf("%d%d",&n,&m)){for(int i=1;i<=m;i++){scanf("%d%d%d%d%d",&road[i].a,&road[i].b,&road[i].c,&road[i].p,&road[i].r);}ans=INF;memset(vis,0,sizeof(vis));dfs(1,0);if(ans==INF) puts("impossible");else printf("%d\n",ans);}return 0;}
0 0
- POJ 3411 Paid Roads(dfs)
- poj 3411 Paid Roads(dfs)
- POJ 3411 Paid Roads(DFS)
- poj 3411 Paid Roads(DFS)
- (POJ 3411)Paid Roads <DFS>
- POJ 3411 Paid Roads(dfs技巧)
- POJ 3411-Paid Roads(DFS)
- POJ 3411 Paid Roads(DFS)
- poj 3411 Paid Roads -dfs
- POJ 3411 Paid Roads (DFS多次访问节点)
- poj 3411 Paid Roads 简单的dfs
- POJ 3411 Paid Roads 简单DFS
- poj 3411 Paid Roads dfs+状态压缩
- Paid Roads(DFS)
- Paid Roads(DFS)
- Poj 3411 Paid Roads
- POJ 3411 Paid Roads
- poj 3411 Paid Roads
- Codeforces Round #246 (Div. 2)(B)数学
- unable to start the virtual device the virtual device got no ip address一个解决方法
- 使用MongoDB Shell
- PropertyAnimation属性动画资源 ArgbEvaluator使用
- 自学成才篇:再谈字节流的Read方法
- poj 3411 Paid Roads(DFS)
- 并行计算之路<1>——Hello, CUDA.
- lua三目运算符问题
- 四大组件基本使用实践总结
- Mahout系列之核心功能实践
- 捕蛇者说
- 谈谈自己处理拍照剪裁的一些经验和遇到的问题
- poj1419 Graph Coloring
- Android快速开发(1)