UVALive 3027 Corporative Network
来源:互联网 发布:php工程师个人介绍 编辑:程序博客网 时间:2024/04/28 12:29
题意:有n个结点、两个操作。第一个操作是将结点u的父结点设置为v(距离为|u-v|%1000),第二个操作是询问u到根结点的距离。
思路:并查集。用一个额外的数组储存当前结点到父结点的距离,不加路径优化2000多ms过了,速度慢了点,加优化的话就要维护数组了,应该速度会提升很多。
代码:
#include <iostream>#include<cstdio>#include<cstring>#include<string>#include<algorithm>#include<map>#include<queue>#include<stack>#include<cmath>#include<vector>#define inf 0x3f3f3f3f#define Inf 0x3FFFFFFFFFFFFFFFLL#define eps 1e-9#define pi acos(-1.0)using namespace std;const int maxn=20000+10;int parents[maxn],dis[maxn];int Find(int x){ if(parents[x]==-1) return 0; int sum=0; sum=dis[x]+Find(parents[x]); return sum;}void Uion(int u,int v){ parents[u]=v; dis[u]=(abs(u-v))%1000;}int main(){ //freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout); int t,n; char s[5]; cin>>t; while(t--) { cin>>n; for(int i=0;i<=n;++i) { parents[i]=-1; dis[i]=0; } int a,b; while(cin>>s) { if(s[0]=='O') break; if(s[0]=='I') { cin>>a>>b; Uion(a,b); } else { cin>>a; cout<<Find(a)<<endl; } } } return 0;}
- UVALive 3027 Corporative Network
- UVALive 3027 Corporative Network
- UVALive 3027 Corporative Network
- UVALive 3027 Corporative Network
- UVALive 3027 Corporative Network
- UVALive - 3027 Corporative Network
- UVALive 3027 Corporative Network
- UVALive - 3027 Corporative Network 并查集
- 【暑假】[实用数据结构]UVAlive 3027 Corporative Network
- UVALive 3027 Corporative Network 并查集水题
- uvalive 3027 Corporative Network 并查集+路径压缩
- UVALive - 3027Corporative Network(带权并查集)
- UVALive - 3027 - Corporative Network (并查集!!)
- UVALive - 3027 Corporative Network 并查集+向量
- UVALive 3027---Corporative Network+并查集的应用
- UVALive 3027 Corporative Network (带权并查集)
- uvalive 3027 Corporative Network(并查集)
- uvalive 3027 Corporative Network(种类并查集)
- 百度推广资质收取要求
- html札记一
- Android 开发50例源码
- 题目1040:Prime Number
- 《java数据结构》输出循环矩阵
- UVALive 3027 Corporative Network
- Windows程序设计基础知识
- Android反编译实战(1)
- Protocol Buffer Basics: C++
- Java设计模式-图解-附代码
- 一步一步学习Ubuntu之Vim篇
- PCI 总线枚举
- 为什么应用商店里搜索不到你的App?
- word SaveAs 0x800a1421