1664 清凉冷水
1664 清凉冷水
时间限制: 1 s
空间限制: 128000 KB
题目等级 : 黄金 Gold
题目描述 Description
闷热的夏天,威斯康辛州的奶制品地区提供冷水供奶牛饮用,以此来解渴。农夫约翰将冷水通过N (3 <= N <= 99999; N 为奇数)个冷水管道,分别编号序号1..N从泵的位置一直送到牛棚里。当水在管道中流动时,夏天的热能使它变热。贝茜想要找到最冷的水,这样她就能比任何其他奶牛更好地享受这难得的好天气。
她已经绘制了一整套完整的分支管道,并注意到这个管道系统犹如一棵树,它的根在农场,从根开始每个分支都分离出两个管道。令人惊讶的是,所有管道都有一个长度,当然这所有的N根管道连接成1条路或者和其他的管道路线连接。
给出所有管道连接的地图,计算每一个分支点到牛棚的距离。贝茜将通过这些信息来找到最清凉冷水。
管道的端点,可以作为分支点也可以作为管道终点,它以管道的编号命名。地图上包含C (1<= C <= N)个分支器,每个分支器包含3个数据,管道端点E_i (1<= E_i <= N),管道端点连接的两个管道B1_i, B2_i (2<= B1_i <=N; 2<= B2_i <=N)。管道1连接到牛棚,每两个连接器之间的管道长度均为1。
输入描述 Input Description
* 第 1 行: 2个用空格隔开的整数 N , C
* 第 2 至 C+1 行: 3个用空格隔开的整数,分别表示连接器的编号,以及连接的2个管道的编号E_i, B1_i, B2_i
输出描述 Output Description
* 共 N 行: 分别表示每个管道到牛棚的最短距离。
样例输入 Sample Input
5 2
3 5 4
1 2 3
样例输出 Sample Output
1
2
2
3
3
1 #include<iostream> 2 #include<cstdio> 3 using namespace std; 4 const int N=100000; 5 int n,m; 6 int fa[N]; 7 int main() 8 { 9 cin>>n>>m; 10 for(int i=1;i<=m;i++) 11 { 12 int x,y,z; 13 cin>>x>>y>>z; 14 fa[y]=x; 15 fa[z]=x; 16 } 17 fa[0]=0; 18 for(int i=1;i<=n;i++) 19 { 20 int q=i; 21 int ans=0; 22 while(fa[q]!=0) 23 { 24 q=fa[q]; 25 ans++; 26 } 27 cout<<++ans<<endl; 28 } 29 return 0; 30 }