jjj

Posted meanttobe

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jjj相关的知识,希望对你有一定的参考价值。

#include <bits/stdc++.h>
using namespace std;
const int N=1e5+7;
vector<int>arr[N];
int minNode=0,minBalance=N;
int du[N],n;
int w[N];
int vis[N],bb[N];

void dfs(int u,int fa){
    du[u]=1;
    int Tree_size=0,v;
    for(int i=0;i<arr[u].size();i++){
        v=arr[u][i];
        if(v!=fa){
            dfs(v,u);
            du[u]+=du[v];
            Tree_size=max(du[v],Tree_size);
        }
    }
    Tree_size=max(Tree_size,n-du[u]);
    if(Tree_size<minBalance){
        minBalance=Tree_size;
        minNode=u;
    }
}

int DFS(int a){
    for(int i=0;i<arr[a].size();i++){
        if(bb[arr[a][i]]==0){
            bb[arr[a][i]]=1;
            vis[arr[a][i]]=vis[a]^w[arr[a][i]];
            DFS(arr[a][i]);
        }
    }
}

int main(){
    int t,u,v;
    cin>>n;
    for(int i=1;i<=n;i++){
        scanf("%d",w+i);
    }
    for(int i=0;i<n-1;i++){
        scanf("%d%d",&u,&v);
        arr[u].push_back(v);
        arr[v].push_back(u);
    }
    dfs(1,0);
    cout<<minNode<<endl;
    vis[minNode]=w[minNode];
    bb[minNode]=1;
    DFS(minNode);
    int m;
    cin>>m;
    while(m--){
        scanf("%d%d",&u,&v);
        cout<<(vis[u]^vis[v])-1<<endl;
        
    }
    
    
    return 0;
}

以上是关于jjj的主要内容,如果未能解决你的问题,请参考以下文章

如何从 PL/SQL 调用 .exe?

[SCOI2012]滑雪与时间胶囊

json字符串手动拼接

微信小程序代码片段

牛客IOI周赛27-提高组 C.马老师(容斥dp)

linux文件合并,关键字去重复shell脚本