洛谷——P2256 一中校运会之百米跑
P2256 一中校運(yùn)會(huì)之百米跑
題目背景
在一大堆秀恩愛的**之中,來不及秀恩愛的蘇大學(xué)神踏著堅(jiān)定(?)的步伐走向了100米跑的起點(diǎn)。這時(shí)蘇大學(xué)神發(fā)現(xiàn),百米賽跑的參賽同學(xué)實(shí)在是太多了,連體育老師也忙不過來。這時(shí)體育老師發(fā)現(xiàn)了身為體育委員的蘇大學(xué)神,便來找他幫忙。可是蘇大學(xué)神需要熱身,不然跑到一半就會(huì)抽(筋)、于是他就找到了你。。。如果你幫助體育老師解決了問題,老師就會(huì)給你5個(gè)積分。
題目描述
假設(shè)一共有N(2<=N<=20000)個(gè)參賽選手。(尼瑪全校學(xué)生都沒這么多吧)
老師會(huì)告訴你這N個(gè)選手的名字。
接著會(huì)告訴你M(1<=M<=1000000)句話,即告訴你學(xué)生A與學(xué)生B在同一個(gè)組里。
如果學(xué)生A與學(xué)生B在同一組里,學(xué)生B與學(xué)生C也在同一組里,就說明學(xué)生A與學(xué)生C在同一組。
然后老師會(huì)問你K(1<=K<=1000000)句話,即學(xué)生X和學(xué)生Y是否在同一組里。
若是則輸出"Yes.",否則輸出"No."
輸入輸出格式
輸入格式:
?
第一行輸入N和M。
接下來N行輸入每一個(gè)同學(xué)的名字。
再往下M行每行輸入兩個(gè)名字,且保證這兩個(gè)名字都在上面的N行中出現(xiàn)過,表示這兩個(gè)參賽選手在同一個(gè)組里。
再來輸入K。
接下來輸入K個(gè)體育老師的詢問。
?
輸出格式:
?
對于每一個(gè)體育老師的詢問,輸出"Yes."或"No."。
?
輸入輸出樣例
輸入樣例#1:10 6 Jack Mike ASDA Michel brabrabra HeHe HeHE papapa HeY Obama Jack Obama HeHe HeHE brabrabra HeHe Obama ASDA papapa Obama Obama HeHE 3 Mike Obama HeHE Jack papapa brabrabra 輸出樣例#1:
No. Yes. Yes.
#include<map> #include<cstdio> #include<cstring> #include<cstdlib> #include<iostream> #include<algorithm> #define N 5100 using namespace std; map<string,int>a; int fa[N]; int read() {int x=0,f=1; char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1; ch=getchar();}while(ch>='0'&&ch<='9'){x=x*10+ch-'0'; ch=getchar();}return x*f; } int find(int x) {if(x==fa[x]) return x;fa[x]=find(fa[x]);return fa[x]; } int main() {int n,m,k,x,y,fx,fy,ans=0;string ch,ch1,ch2;n=read(),m=read();for(int i=1;i<=n;i++){cin>>ch;a[ch]=i;}for(int i=1;i<=n;i++) fa[i]=i;for(int i=1;i<=m;i++){cin>>ch1>>ch2;x=a[ch1],y=a[ch2];fx=find(x),fy=find(y);if(fa[fx]==fa[fy]) continue;fa[fx]=fy;}cin>>k;for(int i=1;i<=k;i++){cin>>ch1>>ch2;x=a[ch1],y=a[ch2];if(find(x)==find(y)) printf("Yes.\n");else printf("No.\n");}return 0; }
?
轉(zhuǎn)載于:https://www.cnblogs.com/z360/p/7436516.html
總結(jié)
以上是生活随笔為你收集整理的洛谷——P2256 一中校运会之百米跑的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CentOS 7 为firewalld添
- 下一篇: EventProcessor与WorkP