HDU-2568How far away
来源:互联网 发布:java new string 编辑:程序博客网 时间:2024/06/03 15:11
#include <iostream>#include <vector>#include <cstdio>#include <cstring>using namespace std;const int maxn = 40000+ 10;vector<int> mp[maxn],dist[maxn],u[maxn],f[maxn];bool vis[maxn],vt[maxn];int fa[maxn],w[maxn];int ans[maxn];int n;int find(int x){ if(!fa[x]) return x; return fa[x] = find(fa[x]);}void merge(int x,int y){ int f1 = find(x); int f2 = find(y); if(f1 != f2) fa[f2] = f1;}void Tarjan(int x,int k){ ans[x] = k; for(int i = 0; i<(int)mp[x].size(); i++) { if(!vt[mp[x][i]]) { int v = mp[x][i]; vt[v] = true; Tarjan(v,k+dist[x][i]); merge(x,v); } } vis[x] = true; for(int i = 0; i<(int)u[x].size(); i++) { if(vis[u[x][i]]) w[f[x][i]] = ans[x] + ans[u[x][i]] - 2*ans[find(u[x][i])]; }}int main(){ int t; scanf("%d",&t); int a,b,c,m; while(t--) { scanf("%d %d",&n,&m); for(int i = 1; i<=n; i++) mp[i].clear(),dist[i].clear(),u[i].clear(),f[i].clear(); memset(vis,false,sizeof(vis)); memset(vt,false,sizeof(vt)); memset(fa,0,sizeof(fa)); memset(w,0,sizeof(w)); memset(ans,0,sizeof(ans)); for(int i = 1; i<=n-1; i++) { scanf("%d %d %d",&a,&b,&c); mp[a].push_back(b),dist[a].push_back(c); mp[b].push_back(a),dist[b].push_back(c); } for(int i = 1; i<=m; i++) { scanf("%d %d",&a,&b); u[a].push_back(b),u[b].push_back(a); f[a].push_back(i),f[b].push_back(i); } vt[1] = true; Tarjan(1,0); for(int i = 1; i<=m; i++) printf("%d\n",w[i]); } return 0;}
阅读全文
0 0
- HDU-2568How far away
- HDU How far away ?
- How far away ? HDU
- How far away ? HDU
- How far away ? HDU
- How far away ? HDU
- Hdu 2568 How far away? LCA
- HDU 2586 How far away ?
- HDU 2586 How far away?
- hdu 2586 How far away ?
- HDU 2586 How far away ?
- hdu 2586 How far away ?
- HDU 2586 How far away ?
- hdu 2586 How far away?
- hdu 2586 how far away?
- How far away hdu 2586
- hdu 2586 How far away
- HDU-2586-How far away ?
- python3 查看Django版本
- Android Text的宽高
- java 操作HBase
- Sublime中设置Python编译器
- CodeForces
- HDU-2568How far away
- 16级 《Web前端设计》 总目录
- 阿里Java开发规范IDEA开发插件
- 数据结构上机测试2-1:单链表操作A
- Windows下安装tensorflow步骤--更ok
- LeetCode Blog for course "Algorithms" -- Problem 9
- 【C++】函数的传递方式
- selection does not contain a main type错误
- gcc编译32位(64位)程序