比赛 2024暑假C班集训C 评测结果 C
题目名称 喵星人集会 最终得分 0
用户昵称 liuyiche 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2024-07-12 11:46:28
显示代码纯文本
#include <bits/stdc++.h>
            
using namespace std;

int n;
struct node
{
    bool flag;
    vector<int> nxt;
};
node v[55];

inline void dfs(int u, int fa)
{
    int num = v[u].son.size();
    v[u].dep = v[fa].dep+1;
    for (int i = 0; i <= log2(n); ++i)
        f[u][i+1] = f[f[u][i]][i];
    for (int i = 0; i < num; ++i)
    {
        int cd = v[u].son[i];
        f[cd][0] = u;
        dfs(cd,u);
    }
}

inline int LCA(int x, int y)
{
    if(v[x].dep < v[y].dep)
        swap(x,y);
    for (int i = log2(n); i >= 0; --i)
    {
        if(f[x][i] > 0 && v[f[x][i]].dep >= v[y].dep)
            x = f[x][i];
        if(x == y)
            return x;
            
    }
    for (int i = log2(n); i >= 0; --i)
    {
        if(f[x][i] != f[y][i])
        {
            x = f[x][i];
            y = f[y][i];
        }
    }
    return f[x][0];
}
    
int main()
{
    freopen("party.in", "r", stdin);
    freopen("party.out", "w", stdout);
        
    ios::sync_with_stdio(false);
    cin.tie(0); cout.tie(0);
    memset(f,0,sizeof(f));        
    cin >> n;
    for (int i = 1; i <= n; ++i)
        v[i].fa = 0;
    for(int i = 1; i <= n; ++i)
    {
        char a;
        cin >> a;
        v[i].flag = a-'0';
    }
    for(int i = 1; i < n; ++i)
    {
        int u, v;
        cin >> u >> v;
        v[u].nxt.push_back(v);
        v[v].nxt.push_back(u);
    }
    
    for(int i = 1; i <= n; ++i)
    {
        
    }
    
   	return 0;
}