hdu 3339 In Action shortest path
来源:互联网 发布:淘宝加微信返现 编辑:程序博客网 时间:2024/05/20 06:05
First I use two dimesion dynamic programming algorithm,The answer is TLE,So I improve my algorithm to one dimesion and solve it.
The portal :http://acm.hdu.edu.cn/showproblem.php?pid=3339
#include <cstdio>#include <cstdlib>#include <cstring>#include <iostream>#include <algorithm>#include <map>#include <queue>#include <stack>#include <set>#define MAXN 105using namespace std;const int INF = 0x3f3f3f3f;bool vis[MAXN];int pre[MAXN];int cost[MAXN][MAXN];int lowcost[MAXN];int power[MAXN];int dp[MAXN*MAXN];void Init(){ memset(vis,0,sizeof(vis)); memset(pre,-1,sizeof(pre)); memset(cost,0x3f,sizeof(cost)); memset(lowcost,0x3f,sizeof(lowcost));}void Dijkstra(int n,int beg){ lowcost[beg] = 0; for(int j=0;j<n;j++){ int Min = INF; int k = -1; for(int i=0;i<n;i++){ if(!vis[i]&&lowcost[i]<Min){ Min = lowcost[i]; k = i; } } if(k==-1)break; vis[k] = true; for(int i=0;i<n;i++){ if(!vis[i]&&lowcost[k]+cost[k][i]<lowcost[i]){ lowcost[i] = lowcost[k] + cost[k][i]; pre[i] = k; } } }}void Input(){ int T; scanf("%d",&T); while(T--){ Init(); int n,m; scanf("%d %d",&n,&m); int tempa,tempb,tempr; for(int i=0;i<m;i++){ scanf("%d %d %d",&tempa,&tempb,&tempr); if(cost[tempa][tempb]>tempr){ cost[tempa][tempb] = tempr; cost[tempb][tempa] = tempr; } } Dijkstra(n+1,0); int power_sum = 0; for(int i=1;i<=n;i++){ scanf("%d",power+i); power_sum += power[i]; } int road_sum = 0; for(int i=1;i<=n;i++){ if(lowcost[i]!=INF) road_sum += lowcost[i]; } memset(dp,0,sizeof(dp)); for(int i=1;i<=n;i++){ if(lowcost[i] == INF)continue; for(int j=road_sum;j>=lowcost[i];j--){ dp[j] = max(dp[j],dp[j-lowcost[i]]+power[i]); } } int ans = INF; for(int i=0;i<=road_sum;i++){ if(dp[i]>power_sum/2){ ans = i; break; } } if(ans==INF){ puts("impossible"); } else{ printf("%d\n",ans); } }}int main(void){ Input(); return 0;}
0 0
- hdu 3339 In Action shortest path
- The Shortest Path in Nya Graph HDU
- The Shortest Path in Nya Graph HDU
- hdu 3631 Shortest Path
- hdu 3631 Shortest Path
- hdu 3631 Shortest Path
- Hdu 3631 Shortest Path
- HDU 3631 Shortest Path
- HDU Shortest path
- HDU 3631 Shortest Path
- HDU 5636 Shortest Path
- hdu 5636 Shortest Path
- HDU 3631 Shortest Path
- HDU 5636 Shortest Path
- HDU-3631-Shortest Path
- hdu 4725 The Shortest Path in Nya Graph
- HDU-4725-The Shortest Path in Nya Graph
- HDU 4725 The Shortest Path in Nya Graph
- 第二章,数据类型和运算符
- Sqlserver 多条记录合并 转载整理
- 为控件设置相同的效果
- 数据交换工具Kettle
- 《剑指Offer》学习笔记--面试题22:栈的压入、弹出序列
- hdu 3339 In Action shortest path
- Nodejs 即时通信socket.io
- web 文件上传
- Caffe安装问题汇总
- awk的使用
- FireBug 调试JS入门 —如何调试JS
- C++ - C++ signal的使用
- 输入一个非负整数返回组成它的数字之和,用递归实现
- postgreSQL中insert into select 和select into from复制表