義烏普及組2018預賽 聚會

2022-04-04 17:03:26 字數 1471 閱讀 1422

前置芝士:並查集

說到義烏普及組2018預賽

我就想起... 那是真的oi兩開花。(霧

小白有n個同學,他要開p次聚會,每次他會邀請兩個同學參加聚會。並且他知道這n個同學之間的朋友關係,如果a和b是朋友,b和c是朋友,則a和c也是朋友。

給出m對朋友關係,p次聚會,請判斷每次被邀請的兩個人是否為朋友關係。

input data

第一行3個整數n,m,p。分別表示n個同學,m對朋友關係,p次聚會。

接下來n行,每行乙個字串,依次表示每個同學的名字。(字串長度≤11,且全部位大寫字母)

接下來m行,每行兩個字串,用空格隔開,表示為朋友關係的兩個人的名字;

接下來p行,每行兩個字串,依次表示每次聚會被邀請的兩個人的名字。

output data

輸出p行,每行乙個整數1或者0,其中1表示朋友關係,0表示非朋友關係。

input / output sample

3 1 1

aaabbb

cccaaa ccc

aaa bbb

0對於30%的資料1≤n,m,p≤100;

對於50%的資料1≤n,m,p≤1000;

對於100%的資料1≤n,m,p≤2000;

一年前剛學oi 只會用陣列。 而一年後 回過來做這題。 覺得特簡單(優越感油然而生)

emmm 廢話不多。 這題就是個板子。(而且還是個並查集板子)

重要的是怎麼儲存這個編號 然後並查集。

不難想。我們可以用\(map\)吖。

這樣就很簡單了。

//並查集板子

inline int find(int x)

inline void merge(int x,int y)

完整**

#ifdef dubug

#endif

#include using namespace std;

typedef long long ll ;

inline ll in()

map mp ;

const int n = 2000 + 5 ;

int n , m , p ;

int fa[n] ;

inline int find(int x)

inline void merge(int x,int y)

signed main ()

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

for(register int i=1;i<=p;i++)

return 0 ;

}

2018普及組初賽試題詳解

1.d 地球人都知道 2.d解析 可以選擇將所有的其他進製換為10進製,10進製轉多進製以及多進製轉十進位制方法如下 設該十進位制數為n,要化為h進製 用h不斷除以n,直到n為0為止,在整個過程中記下餘數並按順序排列,最後將該序列倒過來就是h進製下的n 舉個例子 接下來要把37換成2進製 37 2 ...

NOIP2018普及組 參賽總結

發現就我只打了這麼一點字,所以再重新發一下 考前 考試前一天晚上一直在看電視 看到了10點還是11點吧,寫了一會兒會兒作業,但我覺得這不是考砸了的理由 誰叫我本來就如此之水 第二天早上很早就起床了,還順便跟外婆還有老媽去小區外面吃了個早餐。然後老媽帶我來了考場,也是在附近萬達吃了飯,走路就花了我差不...

NOIP2018普及組複賽解析

輸入乙個字串,求字串除了空格的字元個數 這種考你會不會程式設計的題不會?include include include using namespace std int ans string c intmain 乙個長度為n序列,被中間點m分成兩半,m左邊和m右邊。左邊戰鬥力為 i 1m 1 m i ...