HDOJ 5606-tree【并查集】
来源:互联网 发布:excel文档加密软件 编辑:程序博客网 时间:2024/05/16 17:29
tree
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 894 Accepted Submission(s): 420
Problem Description
There is a tree(the tree is a connected graph which containsn points and n−1 edges),the points are labeled from 1 to n ,which edge has a weight from 0 to 1,for every point i∈[1,n] ,you should find the number of the points which are closest to it,the clostest points can containi itself.
Input
the first line contains a number T,means T test cases.
for each test case,the first line is a nubmern ,means the number of the points,next n-1 lines,each line contains three numbers u,v,w ,which shows an edge and its weight.
T≤50,n≤105,u,v∈[1,n],w∈[0,1]
for each test case,the first line is a nubmer
Output
for each test case,you need to print the answer to each point.
in consideration of the large output,imagineansi is the answer to point i ,you only need to output,ans1 xor ans2 xor ans3.. ansn .
in consideration of the large output,imagine
Sample Input
131 2 02 3 1
Sample Output
1in the sample.$ans_1=2$$ans_2=2$$ans_3=1$$2~xor~2~xor~1=1$,so you need to output 1.
Source
BestCoder Round #68 (div.2)
解题思路:
有一个树(n个点, n−1条边的联通图),点标号从1-n,树的边权是0或1.求离每个点最近的点个数(包括自己)。
由题意可得,当权值为1时这两边是不会联通的,因为这一点到自己的距离始终唯0,所以这一点只有到距离为0常能联通。
#include<stdio.h>#include<string.h>#include<algorithm>#define M 100002using namespace std;int n;int fa[M],arr[M];void init(){int i,j;for(i=1;i<=n;i++){fa[i]=i;arr[i]=1;}}int find(int x){int r=x;while(r!=fa[r]){r=fa[r];}return r;}void join(int x,int y){int fx=find(x);int fy=find(y);if(fx!=fy){fa[fx]=fy;arr[fy]+=arr[fx];}}int main(){int T;scanf("%d",&T);while(T--){scanf("%d",&n);init();int i,j;for(i=0;i<n-1;i++){int x,y,w;scanf("%d%d%d",&x,&y,&w);if(w==1){continue;}else{join(x,y);}}int ans=arr[find(1)];for(i=2;i<=n;i++){ans^=arr[find(i)];//异或运算 }printf("%d\n",ans);}return 0;}
0 0
- hdoj tree 5606 (并查集)
- hdoj 5606 tree 【并查集】
- HDOJ 5606 tree(并查集)
- 【并查集】HDOJ tree 5606
- hdoj--5606--tree(并查集)
- hdoj 5606 tree 【并查集】
- HDOJ 5606-tree【并查集】
- 【并查集】 HDOJ 4786 Fibonacci Tree
- hdoj 1325 Is It A Tree? 【并查集】
- hdoj 4786 Fibonacci Tree (并查集)
- HDOJ 1325 Is It A Tree?(并查集)
- HDOJ 1325 Is It A Tree? (并查集)
- HDOJ 1325 Is It A Tree(并查集)
- Tree(并查集)
- HDU 5606 tree(并查集)
- HDU 5606 tree 并查集
- hdu 5606 tree(并查集)
- HDU 5606 tree(并查集)
- 自定义标签库的开发——传统标签tag、IterationTag接口(TagSupport),简单标签,转义标签,打包标签,java打为exe
- HDOJ 2923 Einbahnstrasse (Floyed)
- 数据结构之单向链表
- 怎么用c#编写浏览器或者执行javascript代码?
- 算法_2:数值算法
- HDOJ 5606-tree【并查集】
- 【转载】光流法简单介绍
- 运行MIT-GNU Scheme出现“Requested allocation is too large”
- 总结一下自己的2015
- leetcode学习笔记5
- 自定义等高的cell(代码创建frame)
- Fill the Square
- 【Java设计模式】详解系列 3.1.2行为型模式 : 观察者模式 — 模式详解
- shell 中的continue