麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

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

codeforces 763A Timofey and a tree

2019-11-11 05:13:53
字體:
來源:轉載
供稿:網友

題目鏈接:http://codeforces.com/PRoblemset/problem/763/A

題意:在一棵樹中選擇一個頂點為根結點,從而使這棵樹除根結點以外的所有子樹內的顏色一致

        解題入口 :若一條邊關聯的兩個頂點顏色不同,則根結點必在兩者中產生,不然則無解——兩者若沒有其一上升為根結點,則兩者必共存于同一顆子樹中,顏色不同,此時無解。

        全面考慮 4種情況:

                              1.關聯不同顏色頂點的邊數為0

                              2.關聯不同顏色頂點的邊數為1

                              3.關聯不同顏色頂點的邊數為n(n>1),呈放射式,都有關聯到同一個頂點

                              4.關聯不同顏色頂點的邊數為n(n>1),呈離散式,沒有都關聯到同一個頂點

       都符合解題入口的描述。

方法一:找到根節點了 dfs進行check

#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>#include <string>#include <cmath>#include <vector>#include <queue>#include <stack>#include <set>#include <map>using namespace std;#define FOR(i,k,n) for(int i=k;i<n;i++)#define FORR(i,k,n) for(int i=k;i<=n;i++)#define scan(a) scanf("%d",&a)#define scann(a,b) scanf("%d%d",&a,&b)#define scannn(a,b,c) scanf("%d%d%d",&a,&b,&c)#define mst(a,n)  memset(a,n,sizeof(a))#define ll long long#define N 100005#define mod 1000000007#define INF 0x3f3f3f3fconst double eps=1e-8;const double pi=acos(-1.0);vector<int> g[N];int c[N];int vis[N];int root[2];bool Dfs(int u,int i){    vis[u]=1;                                                           //check流程    for(int j=0; j<g[u].size(); j++)                                    //    {                                                                   //        if(!vis[g[u][j]])                                               //        {                                                               //            if(!Dfs(g[u][j],i))                                         //                return false;                                           //            else                                                        //            {                                                           //                if(u!=root[i] && c[u]!=c[g[u][j]])//check內容           //                    return false;                                       //            }                                                           //        }                                                               //    }                                                                   //    return true;                                                        //check流程}int main(){    //freopen("in.txt","r",stdin);    //freopen("out.txt","w",stdout);    int n,u,v;    cin>>n;    for(int i=0; i<n-1; i++)    {        cin>>u>>v;        g[u].push_back(v);        g[v].push_back(u);    }    for(int i=1; i<=n; i++)        cin>>c[i];    for(int u=1; u<=n; u++)    {        for(int j=0; j<g[u].size(); j++)            if(c[u]!=c[g[u][j]])                root[0]=u, root[1]=g[u][j];    }    //    //for(int i=0;i<2;i++) cout<<"root "<<root[i]<<endl;    //    if(!root[0]&&!root[1])    {        cout<<"YES"<<endl<<"1"<<endl;        return 0;    }    int i=0;    for(;i<2;i++)    {        mst(vis,0);        if(Dfs(root[i],i))        {            cout<<"YES"<<endl<<root[i]<<endl;            break;        }    }    if(i==2)        cout<<"NO"<<endl;    return 0;}方法二:數數。。Orz(在cf上看到別人的做法)

# include<bits/stdc++.h>using namespace std;#define ll long longll arr[1000009];ll brr[1000009];ll idx[1000009];ll st[1000009];int main(){        ll n;        cin>>n;        for(int i=1; i<n; i++)        {            cin>>arr[i]>>brr[i];        }        for(int i=1; i<=n; i++)        {            cin>>idx[i];        }        ll c=0;        for(int i=1; i<n; i++)        {            if(idx[arr[i]]!=idx[brr[i]])            {                c++;                st[arr[i]]++;                st[brr[i]]++;            }        }        for(int i=1; i<=n; i++)        {            if(st[i]==c)            {                cout<<"YES/n"<<i<<endl;                return 0;            }        }        cout<<"NO/n";    return 0;}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 亚洲啊v在线观看 | 国产美女视频黄a视频免费 日韩黄色在线播放 | 久久综合婷婷香五月 | 视频一区二区三区中文字幕 | 成人短视频在线播放 | 免费看日韩片 | 欧美色大成网站www永久男同 | 精品国产成人 | 色偷偷欧美| 日韩视频一区在线 | 香蕉视频1024 | 国产精品久久久久av | 国产精品夜色视频一级区 | 国产一区免费 | 91成人久久| 色猫av | 国产精品一区视频 | 3级毛片 | 欧美日韩国产成人在线 | 一级做受大片免费视频 | 国外成人在线视频 | 日本欧美一区二区三区在线观看 | 日韩视频www| xxxx8| 成片免费观看视频大全 | 日本精品一区二区 | 92看片淫黄大片一级 | 成人激情久久 | 日本aaaa片毛片免费观看视频 | 国产精品剧情一区二区在线观看 | 一级黄色影片在线观看 | 精国产品一区二区三区四季综 | 福利在线小视频 | 91婷婷射| 香蕉秀 | 高清国产午夜精品久久久久久 | 神马久久精品综合 | 姑娘第四集免费看视频 | 中国字幕av| 精品国产一区二区三区四区在线 | 91网站链接 |