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

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

CodeForces 763A Timofey and a tree

2019-11-11 07:49:29
字體:
來源:轉載
供稿:網友

A. Timofey and a treetime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard output

Each New Year Timofey and his friends cut down a tree of n vertices and bring it home. After that they paint all the n its vertices, so that the i-th vertex gets color ci.

Now it's time for Timofey birthday, and his mother asked him to remove the tree. Timofey removes the tree in the following way: he takes some vertex in hands, while all the other vertices move down so that the tree becomes rooted at the chosen vertex. After that Timofey brings the tree to a trash can.

Timofey doesn't like it when many colors are mixing together. A subtree annoys him if there are vertices of different color in it. Timofey wants to find a vertex which he should take in hands so that there are no subtrees that annoy him. He doesn't consider the whole tree as a subtree since he can't see the color of the root vertex.

A subtree of some vertex is a subgraph containing that vertex and all its descendants.

Your task is to determine if there is a vertex, taking which in hands Timofey wouldn't be annoyed.

Input

The first line contains single integer n (2?≤?n?≤?105) — the number of vertices in the tree.

Each of the next n?-?1 lines contains two integers u and v (1?≤?u,?v?≤?nu?≠?v), denoting there is an edge between vertices u and v. It is guaranteed that the given graph is a tree.

The next line contains n integers c1,?c2,?...,?cn (1?≤?ci?≤?105), denoting the colors of the vertices.

Output

PRint "NO" in a single line, if Timofey can't take the tree in such a way that it doesn't annoy him.

Otherwise print "YES" in the first line. In the second line print the index of the vertex which Timofey should take in hands. If there are multiple answers, print any of them.

Examplesinput
41 22 33 41 2 1 1output
YES2input
31 22 31 2 3output
YES2input
41 22 33 41 2 1 2output
NO

題意:簡述就是說給我們一個樹:樹中有n個節點,每個節點都會有一個顏色。(用1~n之間不同的數字表示。)同時還說明了樹中各個節點之間的關系。(用n-1個u,v表示。)現在問我們以哪個節點作為根,可以使得這個根下的所有子樹都為純色。(子樹中的所有節點的顏色都相同。)如果有輸出那個節點,如果存在多個答案只需輸出任意解。如果沒有就輸出“NO”。

思路:這個題應該至少有兩種解法。第一種是假設一個點為根然后用dfs遍歷一遍它的子樹,并且判斷這個子樹是否可以為根就行了。(但是,這種做法寫的不好容易超時。而且代碼實現也比較麻煩,需要先用鄰接表存儲整個樹才行。)第二種是在直接使用結構體存儲n-1對輸入,然后在輸入完顏色之后遍歷一遍數組記錄下每個節點與它相鄰的節點中不同色的數量cnt[i](對于第i個節點有cnt[i]個相鄰節點與節點i的顏色不同。)以及所有相鄰節點中不同色的對數m,最后在遍歷數組cnt,如果存在第i個節點cnt[i]==m。則第i個節點就是那個根,如果不存在那就可以直接輸出“NO”了。因為已經說明了給我們的一定是一個樹,所以,這也就是第二種做法的正確的基本。

     在比賽中我原本是用第一種思路來解的,雖然當時是過了。但是,在重測時卻在在60+組中超時了。雖然第二天我就把我原來的代碼調完AC了。但我還是覺得那個代碼又臭又長,所以,就不放出來了。(第一種思路可以在O(nlongn)時間復雜度內完成。)直接上第二個思路的代碼,代碼相對來說就比較精簡。(第二種思路的時間復雜度是O(n)。)

代碼:

#include<iostream>#include<cstring>#define MAX 100005using namespace std;struct edge{	int a,b;};edge E[MAX];//在這個結構體中用來存儲輸入,a,b之間相連。 int poit[MAX],cnt[MAX];//用poit數組來存儲每個節點的顏色。//cnt存儲與它相鄰的點中顏色不同的數量。 int main(){	int n;	while(cin>>n){		int m=0;		for(int j=1;j<n;j++)			cin>>E[j].a>>E[j].b;		for(int j=1;j<=n;j++)			cin>>poit[j];		memset(cnt,0,sizeof(cnt));		for(int j=1;j<n;j++){			if(poit[E[j].a]!=poit[E[j].b]){				cnt[E[j].a]++,cnt[E[j].b]++;				m++;			}		//m表示的是總對數,因為,輸入不會重復,所以m才可以直接這樣計數。 		}		for(int j=1;j<=n;j++){			if(cnt[j]==m){				cout<<"YES"<<endl<<j<<endl;				goto end;			}		//如果找到了一個cin[j]==m那就找到這個根了。 		}		cout<<"NO"<<endl;		end:;	}} 

總結:  總得來說這個題還是相當好的,目測這個就是正解了。代碼實現沒有什么難度,只是想要想到這一點比較麻煩。即使想不到這個方法。但是,對于一些人來說也可以使用強硬的代碼水平來AC。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美国产在线视频| 色婷婷综合成人| 久久精品99久久香蕉国产色戒| 国内成人精品视频| 国产精品丝袜白浆摸在线| 欧美日韩在线第一页| 亚洲电影天堂av| 日韩av在线一区| 欧美性猛交xxxx免费看| 日本不卡视频在线播放| 超碰91人人草人人干| 久久国产精品99国产精| 日韩精品在线第一页| 国产亚洲欧美另类中文| 国产精品久久久久久久久久久久久久| 亚洲激情国产精品| 欧美成人剧情片在线观看| 国内精品中文字幕| 国产精品第2页| 中日韩美女免费视频网址在线观看| 欧美亚洲视频一区二区| 91国内在线视频| 中文字幕v亚洲ⅴv天堂| 亚洲天堂2020| 久久久精品一区二区| 91国内在线视频| 亚洲精品大尺度| 成人国产精品av| 91国语精品自产拍在线观看性色| 欧美精品videos另类日本| 91成人在线观看国产| 日韩亚洲综合在线| 亚洲国产精品va在线观看黑人| 国内精品400部情侣激情| 91久久国产精品91久久性色| 久久久国产精品亚洲一区| 欧美成人在线影院| 精品国产视频在线| 亚洲激情视频在线观看| 岛国av一区二区在线在线观看| 国产福利精品在线| 国产亚洲视频中文字幕视频| 91精品国产九九九久久久亚洲| 欧美在线一区二区视频| 正在播放欧美一区| 日韩欧美亚洲国产一区| 夜夜狂射影院欧美极品| 热re99久久精品国产66热| 国产精品v片在线观看不卡| 欧美午夜激情小视频| 国产成人在线精品| 中文字幕久热精品视频在线| 久久久国产一区二区三区| 欧美视频在线观看 亚洲欧| 亚洲色图综合久久| 亚洲视频电影图片偷拍一区| 日韩成人在线视频| 久精品免费视频| 亚洲精品成人免费| 成人黄色在线观看| 一色桃子一区二区| 中文字幕免费精品一区| 中文在线不卡视频| 亚洲国产另类 国产精品国产免费| 欧美电影在线观看高清| 亚洲精品视频中文字幕| 欧美亚洲另类激情另类| 欧美日韩国产成人高清视频| 日韩电影中文 亚洲精品乱码| 亚洲香蕉av在线一区二区三区| 精品国产视频在线| 久久久人成影片一区二区三区观看| 2019中文字幕全在线观看| 国产精品xxxxx| www.日韩.com| 日韩成人在线视频| 亚洲一区二区三区sesese| 成人久久久久爱| 91日本在线视频| 国产成人精品电影久久久| 色爱av美腿丝袜综合粉嫩av| 国产69精品久久久久9| 亚洲精品国产美女| 久久影院免费观看| 国产精品久久精品| 精品久久久久久中文字幕| 国产一区二区三区视频在线观看| 国产精品久久av| 亚洲国产欧美精品| 欧美日韩中文字幕综合视频| 91精品国产91久久久久久| 亚洲va欧美va在线观看| 欧美疯狂做受xxxx高潮| 成人精品视频久久久久| 久久久久亚洲精品成人网小说| 一区二区三区美女xx视频| 久久久久久伊人| 久久亚洲成人精品| 91精品国产乱码久久久久久蜜臀| 成人黄色中文字幕| 国产成人精品久久亚洲高清不卡| 亚洲成人精品久久久| 国产一区二区三区在线视频| 在线观看欧美视频| 国产在线98福利播放视频| 国产一区二区视频在线观看| 中文字幕av日韩| 欧美精品久久久久久久| 欧美高清激情视频| 成人羞羞国产免费| 成人欧美一区二区三区在线| 国外成人在线播放| 91精品国产乱码久久久久久蜜臀| 日韩视频免费中文字幕| 欧美激情第99页| 欧美色视频日本版| 欧美交受高潮1| 亚洲精品免费一区二区三区| 亚洲欧洲高清在线| 91欧美精品成人综合在线观看| 最好看的2019年中文视频| 日韩黄色av网站| 久久亚洲成人精品| 国产日韩欧美在线播放| 91精品国产成人www| 欧美视频免费在线观看| 中文字幕在线观看亚洲| 日韩精品免费综合视频在线播放| 久久精品99无色码中文字幕| 欧美日韩国产一区在线| 狠狠躁夜夜躁人人爽超碰91| 欧美一级大片在线免费观看| 亚洲专区中文字幕| 成人午夜两性视频| 成人深夜直播免费观看| 2021国产精品视频| 色黄久久久久久| 992tv在线成人免费观看| 久久久在线免费观看| 97在线视频免费播放| 日韩精品在线视频观看| 超碰精品一区二区三区乱码| 国产精品久久久久久婷婷天堂| 亚洲精品国产精品乱码不99按摩| 91精品久久久久久久久不口人| 国产黑人绿帽在线第一区| 57pao国产精品一区| 欧美一区视频在线| 国产欧美精品一区二区| 久久在线免费观看视频| 欧美日韩免费观看中文| 久久激情五月丁香伊人| 亚洲一级一级97网| 精品久久久久久久久久国产| 黑人巨大精品欧美一区二区| 国产精品久久久久久久久影视| 久久亚洲综合国产精品99麻豆精品福利| 亚洲激情视频在线| 亚洲欧美另类自拍| 久久久久久久久国产精品| 亚洲aⅴ男人的天堂在线观看| 亚洲国产精品va在线观看黑人| 91成人在线播放| 奇米4444一区二区三区|