日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

hdu2545树上战争

發布時間:2023/12/8 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hdu2545树上战争 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

樹上戰爭
Time Limit : 10000/4000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other)
Total Submission(s) : 4 Accepted Submission(s) : 4
Problem Description
給一棵樹,如果樹上的某個節點被某個人占據,則它的所有兒子都被占據,lxh和pfz初始時分別站在兩個節點上,誰當前所在的點被另一個人占據,他就輸了比賽,問誰能獲勝

Input
輸入包含多組數據每組第一行包含兩個數N,M(N,M<=100000),N表示樹的節點數,M表示詢問數,N=M=0表示輸入結束。節點的編號為1到N。接下來N-1行,每行2個整數A,B(1<=A,B<=N),表示編號為A的節點是編號為B的節點的父親接下來M行,每行有2個數,表示lxh和pfz的初始位置的編號X,Y(1<=X,Y<=N,X!=Y),lxh總是先移動

Output
對于每次詢問,輸出一行,輸出獲勝者的名字

Sample Input
2 1
1 2
1 2
5 2
1 2
1 3
3 4
3 5
4 2
4 5
0 0

Sample Output
lxh
pfz
lxh

提示:
本題輸入、輸出都很多,請使用scanf和printf代替cin、cout。

題意:給一棵樹的所有父節點和子節點,如果一個點是另一個點的子節點,那么他屬于這個節點,也就是輸了,然后一對初始位置,問假如第一個先走,誰會贏?
我們通過父節點知道,每次輸入一對節點,前一個節點是后一個節點的父節點,那么直接加入該節點的集合即可,不多說,直接并查集

#include <cstring> #include <cstdio> #include <algorithm> #include <iostream> using namespace std; #define N 100010 int map[N],rank_[N]; int n,m; int ans; void init(int n) {for(int i=1;i<=n;i++){map[i]=i;} } int find(int x) {int num=0;while(x!=map[x]){x=map[x];num++;}return num; } void Union(int x,int y) {int a=find(x);int b=find(y);if(a==b)return;if(rank_[x]>rank_[y])map[y]=x;else{if(rank_[x]==rank_[y])rank_[y]++;map[x]=y;} } int main() {int x,y;while(scanf("%d%d",&n,&m)!=EOF&&n+m){init(n);for(int i=1;i<=n-1;i++){scanf("%d%d",&x,&y);map[y]=x;}int anw1,anw2;for(int i=1;i<=m;i++){scanf("%d%d",&anw1,&anw2);if(find(anw1)<=find(anw2))printf("lxh\n");elseprintf("pfz\n");}} }

總結

以上是生活随笔為你收集整理的hdu2545树上战争的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。