前置芝士:並查集
說到義烏普及組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 ...