亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

codeforces766D Mahmoud and a Dictionary [并查集]【數據結構】

2019-11-10 18:47:18
字體:
來源:轉載
供稿:網友

題目連接:http://codeforces.com/contest/766/PRoblem/D

—————————————————————————————-. D. Mahmoud and a Dictionary time limit per test4 seconds memory limit per test256 megabytes inputstandard input outputstandard output Mahmoud wants to write a new dictionary that contains n Words and relations between them. There are two types of relations: synonymy (i. e. the two words mean the same) and antonymy (i. e. the two words mean the opposite). From time to time he discovers a new relation between two words.

He know that if two words have a relation between them, then each of them has relations with the words that has relations with the other. For example, if like means love and love is the opposite of hate, then like is also the opposite of hate. One more example: if love is the opposite of hate and hate is the opposite of like, then love means like, and so on.

Sometimes Mahmoud discovers a wrong relation. A wrong relation is a relation that makes two words equal and opposite at the same time. For example if he knows that love means like and like is the opposite of hate, and then he figures out that hate means like, the last relation is absolutely wrong because it makes hate and like opposite and have the same meaning at the same time.

After Mahmoud figured out many relations, he was worried that some of them were wrong so that they will make other relations also wrong, so he decided to tell every relation he figured out to his coder friend Ehab and for every relation he wanted to know is it correct or wrong, basing on the previously discovered relations. If it is wrong he ignores it, and doesn’t check with following relations.

After adding all relations, Mahmoud asked Ehab about relations between some words based on the information he had given to him. Ehab is busy making a Codeforces round so he asked you for help.

Input The first line of input contains three integers n, m and q (2?≤?n?≤?105, 1?≤?m,?q?≤?105) where n is the number of words in the dictionary, m is the number of relations Mahmoud figured out and q is the number of questions Mahmoud asked after telling all relations.

The second line contains n distinct words a1,?a2,?…,?an consisting of small English letters with length not exceeding 20, which are the words in the dictionary.

Then m lines follow, each of them contains an integer t (1?≤?t?≤?2) followed by two different words xi and yi which has appeared in the dictionary words. If t?=?1, that means xi has a synonymy relation with yi, otherwise xi has an antonymy relation with yi.

Then q lines follow, each of them contains two different words which has appeared in the dictionary. That are the pairs of words Mahmoud wants to know the relation between basing on the relations he had discovered.

All words in input contain only lowercase English letters and their lengths don’t exceed 20 characters. In all relations and in all questions the two words are different.

Output First, print m lines, one per each relation. If some relation is wrong (makes two words opposite and have the same meaning at the same time) you should print “NO” (without quotes) and ignore it, otherwise print “YES” (without quotes).

After that print q lines, one per each question. If the two words have the same meaning, output 1. If they are opposites, output 2. If there is no relation between them, output 3.

See the samples for better understanding.

Examples input 3 3 4 hate love like 1 love like 2 love hate 1 hate like love like love hate like hate hate like output YES YES NO 1 2 2 2 input 8 6 5 hi welcome hello ihateyou goaway dog cat rat 1 hi welcome 1 ihateyou goaway 2 hello ihateyou 2 hi goaway 2 hi hello 1 hi hello dog cat dog hi hi hello ihateyou goaway welcome ihateyou output YES YES YES YES NO YES 3 3 1 1 2

—————————————————————————————-. 題目大意: 就是有n個單詞,有m個關系,q個查詢, 關系是兩個單詞是同義詞還是反義詞,對于當前的這條關系如果與前述關系不符則忽略, 查詢是兩個單詞之間的關系是同義詞還是反義詞還是未知.

解題思路: 很好想到并查集來維護同義詞,然后用另一個數組怎樣的表示兩堆之間的反義詞關系,

最開始是想對每堆進行染色,兩個堆中一個染成+n,另一個染成-n,加和為零表示敵對關系,然后可以在維護一個并查集或者怎樣 ,但是最后GG了

看了題解 發現用另一個數組來維護本堆的反義詞的堆是哪一個,真是奧妙重重。666

這樣的話 這個題目就簡單清晰多了,直接維護就行了。

注意對于m條關系的判定時的細節就好了,詳見代碼。

借(chao)鑒(xi)這里<–戳戳戳

附本題代碼 —————————————————————————————-.

int n,m,q,op;string str,str1,str2;map<string,int>mmp;int pre[N],opp[N];int findi(int x){ int r = x; while(r != pre[r]) r=pre[r]; int i=x,j; while(i!=j){ j=pre[i]; pre[i]=r; i=j; } return r;}void init(){ mmp.clear(); Rep(i,0,n) pre[i]=i,opp[i]=0;}int main(){ while(cin>>n>>m>>q){ init(); Rep(i,1,n) cin>>str,mmp[str]=i; Rep(i,1,m){ cin>>op>>str1>>str2; int x = mmp[str1],y = mmp[str2]; int u = findi(x),v = findi(y); int uu= findi(opp[u]),vv= findi(opp[v]); if(op==1){ if(uu!=v){ puts("YES"); pre[u]=v; if(uu&&vv) pre[uu]=vv; if(!vv) opp[v]=uu; } else puts("NO"); } else { if(u!=v) { puts("YES"); if(uu) pre[v]=uu; else opp[u]=v; if(vv) pre[u]=vv; else opp[v]=u; } else puts("NO"); } } Rep(i,1,q){ cin>>str1>>str2; int x = mmp[str1],y = mmp[str2]; int u = findi(x),v = findi(y); int uu= findi(opp[u]),vv= findi(opp[v]); if (u==v) puts("1"); else { if (uu==v||vv==u) puts("2"); else puts("3"); } } } return 0;}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
7777kkkk成人观看| 精品少妇v888av| 亚洲人成网站999久久久综合| 青青精品视频播放| 精品亚洲永久免费精品| 中文字幕亚洲欧美日韩高清| 一区二区三区www| 日韩免费在线观看视频| 国产日韩欧美中文在线播放| 日韩在线视频导航| 91精品视频观看| 韩国日本不卡在线| 久久777国产线看观看精品| 久久国产加勒比精品无码| 国产精品久久久久久久电影| 日韩中文av在线| 自拍偷拍免费精品| 欧美精品一本久久男人的天堂| 久久在精品线影院精品国产| 久久99精品视频一区97| 3344国产精品免费看| 色一区av在线| 91av在线影院| 亚洲大胆人体视频| 欧美成人性色生活仑片| 26uuu久久噜噜噜噜| 久久久这里只有精品视频| 久久久久久亚洲| 中文字幕最新精品| 最近2019中文字幕第三页视频| 亚洲精品中文字幕女同| 97在线观看视频国产| 日韩成人小视频| 九九热这里只有在线精品视| 亚洲一区免费网站| 欧美日韩国产二区| 91精品国产91久久久久久不卡| 国语自产精品视频在线看| 国产精品久久久精品| 欧美重口另类videos人妖| 国产精品电影观看| 国产日韩欧美自拍| 久久夜色精品国产欧美乱| 久久伊人免费视频| 奇米成人av国产一区二区三区| 91在线观看欧美日韩| 欧美日韩亚洲精品内裤| 日韩欧美在线观看| 在线成人激情黄色| 懂色aⅴ精品一区二区三区蜜月| 中文字幕在线视频日韩| 亚洲国产成人一区| 亚洲福利视频久久| 欧美男插女视频| 久久久中精品2020中文| 欧美高清在线视频观看不卡| 在线视频亚洲欧美| 在线观看欧美www| 精品人伦一区二区三区蜜桃免费| 久久久久亚洲精品国产| 欧美日韩高清在线观看| 亚洲电影av在线| 精品女同一区二区三区在线播放| 亚洲色图欧美制服丝袜另类第一页| 国产精品久久av| 国产精品av电影| 欧美怡春院一区二区三区| 国产亚洲精品激情久久| 精品日韩美女的视频高清| 亚洲国产一区二区三区四区| 日韩av网址在线| 亚洲精品资源美女情侣酒店| 亚洲精品国产精品久久清纯直播| 国产成+人+综合+亚洲欧洲| 亚洲人成毛片在线播放| 亚洲欧美制服第一页| 国产精品h在线观看| 日本高清久久天堂| 国内精品视频一区| 久久免费国产精品1| 久久视频在线免费观看| 国产精品6699| 日本欧美爱爱爱| 最近更新的2019中文字幕| 欧美日韩精品国产| 青青草一区二区| 欧美亚洲在线播放| 欧美激情在线一区| 国产精品久久久一区| 欧美福利小视频| 精品网站999www| 亚洲人成网站免费播放| 日本三级久久久| 亚洲精品av在线| 亚洲国产欧美一区二区三区同亚洲| 狠狠躁夜夜躁久久躁别揉| 97久久超碰福利国产精品…| 欧美黑人xxxx| 欧美在线视频一区| 狠狠做深爱婷婷久久综合一区| 久久国产加勒比精品无码| 久久天天躁狠狠躁老女人| 欧美超级乱淫片喷水| 中文字幕亚洲欧美日韩2019| 日韩av免费在线播放| 亚洲成人免费网站| 国产成人在线亚洲欧美| 91在线高清视频| 最近免费中文字幕视频2019| 亚洲欧洲成视频免费观看| 亚洲女人天堂成人av在线| 欧美激情亚洲自拍| 亚洲精品中文字幕女同| 日韩电影免费在线观看中文字幕| 日韩精品在线视频观看| 久久久之久亚州精品露出| 久久久久久久一区二区| 色偷偷亚洲男人天堂| 国产成人精品999| 国产中文字幕日韩| 亚洲欧美在线一区| 久久国产精品免费视频| 97超碰蝌蚪网人人做人人爽| 91精品久久久久久久久久久久久| 热久久美女精品天天吊色| 久久久久久久久久久久久久久久久久av| 中文国产亚洲喷潮| 中文字幕视频一区二区在线有码| 欧美日韩国产在线看| 色综合久久久久久中文网| 91国产精品91| 欧美国产日韩免费| 久久久精品国产| 日韩免费看的电影电视剧大全| 成人在线国产精品| 久久精品小视频| 91在线免费网站| 久久免费福利视频| 色婷婷综合久久久久中文字幕1| 浅井舞香一区二区| 精品香蕉在线观看视频一| 国产一区二区久久精品| 成人亚洲欧美一区二区三区| 91国语精品自产拍在线观看性色| 久热99视频在线观看| 日韩国产精品视频| 亚洲娇小xxxx欧美娇小| 色狠狠av一区二区三区香蕉蜜桃| 国产视频精品自拍| 久久精品久久久久久国产 免费| 亚洲japanese制服美女| 岛国av在线不卡| 日本精品免费观看| 黄色成人av在线| 欧美黄色成人网| 国产精品狼人色视频一区| 国产精品伦子伦免费视频| 欧美黑人xxxⅹ高潮交| 国产中文字幕亚洲| 国产精品视频一区二区高潮| 国产亚洲一级高清| 亚洲精品一区在线观看香蕉| 国产视频一区在线| 性色av一区二区三区在线观看|