17ACM Asia Shenyang 1008 transaction
来源:互联网 发布:mac 删除文件 命令 编辑:程序博客网 时间:2024/05/29 18:42
题目:HDU 6201
分析:
法一:树形DP,递归形式DP比较好写,不过我RE了= -
☆法二:建一个虚拟节点,与每一个点连接,边权值为每一个点的价格;
用spfa求从虚拟节点到每一个节点的最短路f[i];
则答案为max{price[i]-f[i]};
复杂度为O(m+n);
代码:
#include <cstdio>#include <algorithm>#include <cstring>#include <vector>#include <queue>using namespace std;const int Tmax=100005;struct edge{ int a,b,c;};edge E[Tmax];int n,f[Tmax],price[Tmax];vector <int> G[Tmax];queue <int> Q;bool in[Tmax];void spfa(){ int tmp,i,len; while(!Q.empty()) Q.pop(); for(i=1;i<=n;i++) { Q.push(i); in[i]=true; } while(!Q.empty()) { tmp=Q.front(); in[tmp]=false; Q.pop(); len=G[tmp].size(); for(i=0;i<len;i++) { if(E[G[tmp][i]].b==tmp) swap(E[G[tmp][i]].a,E[G[tmp][i]].b); if(f[E[G[tmp][i]].b]>f[tmp]+E[G[tmp][i]].c) { f[E[G[tmp][i]].b]=f[tmp]+E[G[tmp][i]].c; if(in[E[G[tmp][i]].b]==false) { in[E[G[tmp][i]].b]=true; Q.push(E[G[tmp][i]].b); } } } } return;}int main(){ int T,i,ans; scanf("%d",&T); while(T--) { scanf("%d",&n); for(i=0;i<=n+1;i++) G[i].clear(); memset(f,0,sizeof(f)); for(i=1;i<=n;i++) { scanf("%d",&price[i]); f[i]=price[i]; /* E[n+i].a=0; E[n+i].b=i; G[0].push_back(n+i);*/ } for(i=1;i<n;i++) { scanf("%d%d%d",&E[i].a,&E[i].b,&E[i].c); G[E[i].a].push_back(i); G[E[i].b].push_back(i); } //memset(in,0,sizeof(in)); spfa(); ans=0; for(i=1;i<=n;i++) ans=max(ans,price[i]-f[i]); printf("%d\n",ans); } return 0;}
阅读全文
0 0
- 17ACM Asia Shenyang 1008 transaction
- HDU-2017 ACM/ICPC Asia Regional Shenyang Online-1008-transaction transaction transaction
- 2017 ACM/ICPC Asia Regional Shenyang Online 1008 transaction transaction transaction
- 2017 ACM/ICPC Asia Regional Shenyang Online:transaction transaction transaction
- 2017 ACM/ICPC Asia Regional Shenyang transaction transaction transaction
- 2017 ACM/ICPC Asia Regional Shenyang Online transaction
- HDU 6201 transaction transaction transaction (Dijstra, 2017 ACM/ICPC Asia Regional Shenyang Online)
- 2017 ACM/ICPC Asia Regional Shenyang Onlin 1008
- 2015 ACM/ICPC Asia Regional Shenyang Online
- 2015 ACM/ICPC Asia Regional Shenyang Online
- 2015 ACM/ICPC Asia Regional Shenyang Online
- 2015 ACM/ICPC Asia Regional Shenyang Online
- 2015 ACM/ICPC Asia Regional Shenyang Online
- 2016 ACM/ICPC Asia Regional Shenyang Online
- 2017 ACM/ICPC Asia Regional Shenyang Online
- 2017 ACM/ICPC Asia Regional Shenyang Online
- 2017 ACM/ICPC Asia Regional Shenyang Online
- 2017 ACM/ICPC Asia Regional Shenyang Online
- hdu6186-思维&前缀和&后缀和-CS Course
- Knockout Tournament
- jmeter连接mysql
- MINGW-W64-I686-TOOLCHAIN
- JS连等赋值的坑
- 17ACM Asia Shenyang 1008 transaction
- 简单结合源码和案例去理解动态代理
- STL之next_permutation函数对各种类型的全排列实例
- Thread 源码分析
- Array、ArrayList、LinkList之间的区别--面试题
- 【jzoj5359】【NOIP2017提高A组模拟9.12】【Arrays and Palindrome】
- Matlab 数模转换时需要的算法
- 公钥加密-私钥解密(RSA)
- linux下磁盘分区