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

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

CodeForces 763A Timofey and a tree

2019-11-14 08:58:38
字體:
來源:轉載
供稿:網友

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
国产精品极品尤物在线观看| 日韩激情av在线播放| 久热精品视频在线观看| 国产精品视频白浆免费视频| 欧美日韩精品在线播放| 中文字幕在线成人| 亚洲人成在线电影| 日本不卡高字幕在线2019| 日韩综合视频在线观看| 色妞欧美日韩在线| 亚洲综合日韩中文字幕v在线| 国产精品视频资源| 91久久精品视频| 欧美日韩亚洲高清| 久久成人18免费网站| 一二美女精品欧洲| 日韩综合视频在线观看| 亚洲97在线观看| 91综合免费在线| 亚洲第一福利视频| 亚洲精品久久久久久久久久久久| 亚洲精品中文字| 色噜噜久久综合伊人一本| 日本精品久久电影| 国产精品女人网站| 91精品久久久久久久久久另类| 亚洲欧美精品在线| yw.139尤物在线精品视频| 欧美日韩国产麻豆| 国产欧美欧洲在线观看| 亚洲成人中文字幕| 欧美精品电影免费在线观看| 中文字幕亚洲欧美日韩在线不卡| 91av视频在线观看| 日韩国产高清视频在线| 欧美综合激情网| 亚洲一区二区三区香蕉| 久久久久国产精品免费网站| www.欧美精品| 亚洲国产成人精品女人久久久| 成人av在线天堂| 国产午夜精品全部视频在线播放| 亚洲人精选亚洲人成在线| 在线播放国产精品| 成人黄色免费片| 92国产精品久久久久首页| 精品中文字幕在线观看| 欧美午夜激情在线| 97精品一区二区三区| 在线日韩中文字幕| 亚洲伊人一本大道中文字幕| 欧美精品日韩三级| www国产亚洲精品久久网站| 欧美激情综合亚洲一二区| 国产精品看片资源| 国产精品免费久久久久久| 色琪琪综合男人的天堂aⅴ视频| 亚洲japanese制服美女| 久久99青青精品免费观看| 国产中文欧美精品| **欧美日韩vr在线| 欧美性猛交99久久久久99按摩| 国产精品都在这里| 97欧美精品一区二区三区| 欧美国产精品日韩| 亚洲免费伊人电影在线观看av| 在线看福利67194| 亚洲性日韩精品一区二区| 国产精品精品视频| 国产视频亚洲精品| 欧美色videos| 97免费视频在线播放| 91国偷自产一区二区三区的观看方式| 91久久嫩草影院一区二区| 北条麻妃99精品青青久久| 欧美激情在线狂野欧美精品| 亚洲欧美一区二区三区四区| 欧美成人精品影院| 91免费综合在线| 欧美激情视频免费观看| 亚洲影院高清在线| 亚洲国产成人91精品| 久久国产精品影视| 岛国av午夜精品| 福利一区福利二区微拍刺激| 国产精品欧美一区二区三区奶水| 欧洲精品在线视频| 欧美一级电影免费在线观看| 黄色成人在线播放| 色综合久久88色综合天天看泰| 亚洲免费av片| 91最新在线免费观看| 国产免费亚洲高清| 久久综合亚洲社区| 国产999视频| 91视频88av| 亚洲综合在线播放| 中文字幕日韩综合av| 久久久999国产精品| 亚洲香蕉成人av网站在线观看| 日韩精品中文字幕视频在线| 国产精品专区第二| 亚洲精品国产免费| 国产一区二区免费| 欧美电影在线观看| 亚洲va欧美va国产综合剧情| 国产亚洲精品久久久久久牛牛| 精品人伦一区二区三区蜜桃网站| 欧美一级视频免费在线观看| 国产一区二区精品丝袜| 一区二区av在线| 日韩高清电影免费观看完整| 91免费的视频在线播放| 国产精自产拍久久久久久蜜| 欧美大片在线免费观看| 久久精品最新地址| 欧美国产日韩免费| 亚洲女人初尝黑人巨大| 欧美另类极品videosbestfree| 午夜精品久久久久久久久久久久| 久久国产精品久久精品| 国产女精品视频网站免费| 亚洲a∨日韩av高清在线观看| 青青草国产精品一区二区| 97视频在线观看成人| 欧美一乱一性一交一视频| 国产精品视频久久久| 国产91精品在线播放| 国产精品av网站| 国产亚洲精品久久久久久牛牛| 在线观看国产欧美| 姬川优奈aav一区二区| 91久久精品日日躁夜夜躁国产| 久久五月情影视| 成人中心免费视频| 精品久久久久久中文字幕一区奶水| 欧美成人第一页| 久久久999国产| 8090成年在线看片午夜| 热re99久久精品国产66热| 成人黄色av免费在线观看| 成人自拍性视频| 久久精品视频亚洲| 精品久久中文字幕久久av| 日韩av一区二区在线观看| 欧美国产高跟鞋裸体秀xxxhd| 亚洲欧美激情精品一区二区| 久久免费国产视频| 国产欧美一区二区三区在线看| 日韩激情第一页| 国产精品欧美一区二区| 国产精品视频久久久久| 精品视频在线播放色网色视频| 成人精品视频在线| 欧美性猛交xxxx乱大交极品| 一区二区福利视频| 亚洲男人天堂古典| 青青草原一区二区| 日韩欧美a级成人黄色| 在线观看国产精品日韩av| 久久久久久久999| 日韩欧美国产一区二区| 国产精品日韩专区| 国产91精品高潮白浆喷水|