hdu6201transaction transaction transaction(最长路spfa vector模板)
来源:互联网 发布:封面制作软件ios 编辑:程序博客网 时间:2024/06/08 12:51
思路:
把点权化成边权,跑最短路,这题卡常数了,必须用vector版的邻接表跑spfa才能过。
代码:
#include <bits/stdc++.h>using namespace std;typedef long long ll;const int maxm = 1e5+7;const int maxn = 1e5+7;const ll inf = 0x3f3f3f3f3f3f3f3f;struct Edge{ int u, v; ll val; Edge(int u = 0,int v = 0,ll val = 0):u(u), v(v), val(val){}};vector<Edge>edges;vector<int>g[maxn];void add(int u,int v,ll val){ edges.push_back(Edge(u,v,val)); g[u].push_back((int)edges.size()-1);}int vis[maxn],ti[maxn];ll dis[maxn];int n,m;queue<int> q;void spfa(int a){ for(int i = 0;i<=n+1;i++) dis[i] = -inf,vis[i] = 0,ti[i] = 0; dis[a] = 0; while(!q.empty()) q.pop(); q.push(a); ti[a]++; while(!q.empty()) { int u = q.front(); q.pop(); vis[u] = 0; for (int i = 0; i < g[u].size(); ++i){ int id = g[u][i]; int v = edges[id].v; ll val = edges[id].val; if (dis[v] < dis[u] + val){ dis[v] = dis[u] + val; if(!vis[v]) { ti[v]++; if(ti[v]>n) return; q.push(v); vis[v] = 1; } } } }}int main(){ int t; scanf("%d",&t); while(~scanf("%d",&n)) { edges.clear(); for (int i = 0; i <= n+1; ++i){ g[i].clear(); } for(int i = 1;i<=n;i++) { ll val; scanf("%lld",&val); add(0,i,-val); add(i,n+1,val); } for(int i = 0;i<n-1;i++) { int u,v; ll val; scanf("%d%d%lld",&u,&v,&val); add(u,v,-val); add(v,u,-val); } spfa(0); printf("%lld\n",dis[n+1]); } return 0;}
阅读全文
1 0
- hdu6201transaction transaction transaction(最长路spfa vector模板)
- hdu6201transaction transaction transaction
- HDU 6201 transaction transaction transaction【树形DP||SPFA最长路】
- hdu 6201 transaction transaction transaction (spfa求最长路)
- Hdu 6201 transaction transaction transaction【最长路】
- hdu6201-搜索|最长路-transaction transaction transaction
- HDU 6201 transaction transaction transaction(SPFA模板)
- hdu 6201 transaction transaction transaction(最长路)
- HDU 6201 transaction transaction transaction (最长路)
- Hdu 6201 transaction transaction transaction(最长路)
- HDU 6201 transaction transaction transaction(SPFA算法求最长路径)
- 【建图+spfa算法】transaction transaction transaction HDU
- HDU-6201 transaction transaction transaction(树dp / 最长(短)路)
- 【最短路 spfa && 水题】hdu-6201 transaction transaction transaction
- Transaction
- Transaction
- Transaction
- transaction
- stm32 使用外部时钟的注意事项(jlink调试输出无信息)
- 爬取房天下(全站)
- tomcat 集群 session复制共享 redis实战版本
- LeetCode 633 Sum of Square Numbers
- poj2063 Investment(完全背包)
- hdu6201transaction transaction transaction(最长路spfa vector模板)
- 0911 Oracle基本概念
- 3Layer
- Taints and Tolerations
- 电子之电容测试标准
- eclipse配置生成.h和.so文件过程
- 剑指offer——42.和为sum的两个数字
- 勤智OneCenter:视频监控系统运维解决方案
- linux crontab