博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu1962Corporative Network带权回路
阅读量:6652 次
发布时间:2019-06-25

本文共 1318 字,大约阅读时间需要 4 分钟。

1 /* 2     有N个企业,每个企业想要实现通信,要用线路来连接,线路的长度为abs(a-b)%1000; 3     如果企业a 链接到了企业b 那么b就是the center of the serving! 4     然后有两种操作: 5     E a : 输出企业a到serving center 的线路的距离 6     I a, b  将企业a连接到企业 b,那么b就成为了serving center(之前连接a的企业,他们的serving center也变成了b)  7      8    思路:并查集! (压缩路径时回溯求解) !  9 */ 10 #include
11 #include
12 #include
13 #include
14 #define M 2000515 using namespace std;16 int n;17 int f[M];18 int ans[M];//节点 i到 serving center的距离! 19 20 int getFather(int x){21 if(x==f[x]) return x;22 int ff=getFather(f[x]);23 ans[x]+=ans[f[x]];//节点x到serving center 的距离要加上其父节点到serving center的距离! 24 return f[x]=ff;25 }26 27 void Union(int a, int b){ 28 if(a==b) return;29 f[a]=b;30 ans[a]=abs(a-b) % 1000;31 }32 33 int main(){34 int t;35 char ch[3];36 cin>>t;37 while(t--){38 cin>>n;39 int a, b;40 memset(ans, 0, sizeof(ans));41 for(int i=1; i<=n; ++i)42 f[i]=i;43 while(cin>>ch && ch[0]!='O'){44 if(ch[0]=='E'){45 cin>>a;46 getFather(a);47 cout<
<
>a>>b;51 Union(a, b);52 }53 }54 }55 return 0;56 }
本文转自 小眼儿 博客园博客,原文链接:http://www.cnblogs.com/hujunzheng/p/3902548.html,如需转载请自行联系原作者
你可能感兴趣的文章
iOS 改变系统UIAlertController message 的对齐方式
查看>>
Hibernate4 No Session found for current thread原因
查看>>
我的友情链接
查看>>
存储引擎 MyISAM InnoDB
查看>>
GDB 笔记
查看>>
Juniper SRX防火墙与Juniper ScreenOS防火墙配置不同点之一
查看>>
工作记录
查看>>
我国.NET域名注册量超55.5万个 稳居全球第三位
查看>>
Linux决心书----曾经的,不能忘怀
查看>>
优化锁操作 Optimizing Locking Operations
查看>>
swift3四舍五入保留n位小数
查看>>
新闻评论列表标签
查看>>
Redis缓存数据库介绍与环境搭建
查看>>
mvn pom
查看>>
220. Contains Duplicate III
查看>>
WPF:DockPanel默认填充机制
查看>>
区域网存活扫描-arp扫描(c++)
查看>>
git http 方式 push 出现 RPC failed 或Entity Too Large 完美解决方案
查看>>
安卓学习之-Fragment-3
查看>>
Of little learning about Jemter
查看>>