【dfs && 剪枝】SPOJ FISHER Fishmonger
2018-01-24 09:00
471 查看
Problem Description
给你n,k分别代表n个点,1点要到达n点不能超过k的时间。
给你n个点,1点是起点,n点是终点。给你两个n*n的矩阵,分别代表任意两点间移动需要的时间,任意两点间移动需要的花费。
让你求1点到达n点不能超过k的时间的前提下的最小花费。
输出最小花费和所用的时间。
思路:
就是求1->n在时间不超过k的情况下的最小花费。
我们可以考虑dfs,然后剪纸一下,条件就是到达当前点花费大于到达n点的花费 && 时间超过了k
给你n,k分别代表n个点,1点要到达n点不能超过k的时间。
给你n个点,1点是起点,n点是终点。给你两个n*n的矩阵,分别代表任意两点间移动需要的时间,任意两点间移动需要的花费。
让你求1点到达n点不能超过k的时间的前提下的最小花费。
输出最小花费和所用的时间。
思路:
就是求1->n在时间不超过k的情况下的最小花费。
我们可以考虑dfs,然后剪纸一下,条件就是到达当前点花费大于到达n点的花费 && 时间超过了k
#include<bits/stdc++.h> using namespace std; const int inf = 0x3f3f3f3f; struct node { int Time, Cost; }; node a[55][55]; int n, k, vis[55]; int ansT, ansC; void dfs(int u, int cT, int cC)//当前点,当前时间,当前花费 { if(u == n)//到达目的点 { if(cC < ansC && cT <= k)//如果花费更小就更新 ansC = cC, ansT = cT; } else { for(int i = 1; i <= n; i++) { if(i == u) continue; if(!vis[i] && (cT + a[u][i].Time) <= k && (cC+a[u][i].Cost) < ansC)//两个剪纸条件 { vis[i] = 1; dfs(i, cT+a[u][i].Time, cC+a[u][i].Cost); vis[i] = 0; } } } } int main() { while(~scanf("%d %d", &n, &k) && (n || k)) { for(int i = 1; i <= n; i++) for(int j = 1; j <= n; j++) scanf("%d", &a[i][j].Time); for(int i = 1; i <= n; i++) for(int j = 1; j <= n; j++) scanf("%d", &a[i][j].Cost); ansT = inf, ansC = inf; memset(vis, 0, sizeof(vis)); vis[1] = 1; dfs(1, 0, 0); printf("%d %d\n", ansC, ansT); } return 0; }
相关文章推荐
- Fishmonger SPOJ - FISHER 有限制的最短路
- 搜索专题(DFS&&BFS&&剪枝)HDU 1728-逃离迷宫
- POJ1190->DFS&&剪枝
- hdu5113 Black And White--DFS & 剪枝
- [LeetCode]47. Permutations II && DFS及剪枝
- hdoj 1455 && nyoj 293 && poj 1110 Sticks 【DFS + 剪枝 + 剪枝 + 剪枝 + 。。。+ 剪枝】
- Gym 100952E&&2015 HIAST Collegiate Programming Contest E. Arrange Teams【DFS+剪枝】
- hdu1455 && poj1011 Sticks(深度优先搜索 DFS 经典剪枝 详解)
- poj&nbsp;1190&nbsp;生日蛋糕&nbsp;剪枝dfs
- [DFS&&剪枝]uva10400 Game Show Math
- 不要丧呀&&POJ 2362 && [剪枝]&&[dfs]
- 【dfs && 剪枝】PTA L3-015. 球队“食物链”(30分)
- HDU1518 & POJ2362 & ZOJ1909 Square(DFS,剪枝是关键呀)
- SPOJ:Strange Waca(不错的搜索&贪心&剪枝)
- ACM: 一题DFS(深搜,剪枝) poj 1011
- 【DFS&&搜索剪枝】CODE[VS] 3498 小木棍
- poj1011 && uva307 DFS + 剪枝
- poj 1014 && zoj 1149 Dividing --- dfs剪枝
- HDUoj 5113 Black And White (dfs&剪枝
- POJ 1321 棋盘问题(DFS & 状压DP)