CQYZ OJ Contest 133 祖孫詢問

2022-05-08 06:30:11 字數 1456 閱讀 5801

同步:

已知一顆有根樹。有m個詢問。每個詢問給出了一對節點x,y,輸出x,y的祖孫關係

第一行節點數目n接下來n行,每行一對整數a,b,表示a和b之間有邊。如果b==-1,那麼a就是數根接下來是乙個整數m,表示詢問的個數接下來m行,每行兩個正整數x,y

對於每乙個詢問,如果x是y的祖先,輸出1;如果y是x的祖先,輸出2;否則輸出0

10

234 -1

12 234

13 234

14 234

15 234

16 234

17 234

18 234

19 234

233 19

5234 233

233 12

233 13

233 15

233 19

100

02

對於30%的資料,n,m<=1000對於100%的資料,n,m<=40000,每個節點的編號都不超過40000

將深的那個節點一直往上跳,跳到同一深度後如果是同乙個節點那乙個就是另乙個的祖先。

好吧大概搞懂什麼是倍增了。

第一次把樹寫到結構體裡面。

注意輸入的兩個節點中,後面那個是爸爸。

#includeusing namespace std;

const int maxn=4e4+5,h=16;

struct tree

void vadd(int p1,int p2)

void setsize(int s)

int getsize(void)

void setroot(int r)

int root(void)

int getdepth(int node)

return depth[node];

} bool checkfa(int son,int fat)

}if(son==fat)return 1;

else return 0;

} private:

struct ed e[maxn];

int head[maxn],newp,size,root_node,depth[maxn],fa[maxn],f[maxn][h];

bool bfsed;

int h;

void bfs_for_depth(void)

q.push(y);}}

bfsed=1;

}};tree a;

int main(void)

else }

scanf("%d",&m);

for(int i=1;i<=m;++i)

else

}else

}printf("%d\n",ans);

} }return 0;

}

第13周專案1 (3)

檔名稱 test.cpp 版本 code blocks 問題描述 定義分數的一目運算 和 分別代表分數取正和求反,將 按位取反運算子 過載為分數的求倒數運算。輸入描述 程式輸出 include include using namespace std class cfraction void simp...

第13章 物件導向程式設計 13

13.13.3 迭代器 randseq和anyiter 1.randseq from random import choice class randseq object def init self,seq self.data seq def iter self return self def nex...

13 鯰魚效應

很久以前,挪威人從深海捕撈的沙丁魚,總是還沒到達岸邊就已經口吐白沫,漁民們想了無數的辦法,想讓沙丁魚活著上岸,但都失敗了。然而,有一條漁船總能帶著活魚上岸,他們帶來的活魚自然比死魚的 貴出好幾倍。原來,他們在沙丁魚槽裡放進了鯰魚。鯰魚是沙丁魚的天敵,當魚槽裡同時放有沙丁魚和鯰魚時,鯰魚出於天性會不斷...