hdu 3339 In Action shortest path
2015-05-10 14:43
399 查看
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
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 105 using 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; }
相关文章推荐
- Dijkstra+Heap-HDU-4725-The Shortest Path in Nya Graph
- HDU 4725 The Shortest Path in Nya Graph
- HDU 4725 —— The Shortest Path in Nya Graph
- HDU 4725-J - The Shortest Path in Nya Graph-增点建图-层次网络-最短路
- hdu The Shortest Path in Nya Graph(建图+spfa)
- HDU 4725 The Shortest Path in Nya Graph 【最短路之建图难点】
- hdu 4725 The Shortest Path in Nya Graph
- HDU 4725 The Shortest Path in Nya Graph
- HDU 4725 The Shortest Path in Nya Graph(拆点+最短路)
- hdu 4725 The Shortest Path in Nya Graph 最短路 拆点
- HDU 4725 The Shortest Path in Nya Graph
- hdu The Shortest Path in Nya Graph(建图+spfa)
- HDU 4725 The Shortest Path in Nya Graph
- HDU 4725 The Shortest Path in Nya Graph [构造 + 最短路]
- HDU 4725 The Shortest Path in Nya Graph
- HDU 4725 The Shortest Path in Nya Graph——建图+dijkstra
- hdu The Shortest Path in Nya Graph(建图+spfa)
- Hdu 4725 The Shortest Path in Nya Graph (spfa)
- HDU 4725 The Shortest Path in Nya Graph 最短路
- HDU 4725 The Shortest Path in Nya Graph (最短路)