题目大意:求1到n的路径权值异或和
题解:dfs
我的收获:3222222
#include <bits/stdc++.h>
using namespace std;
struct edge
{
int v, w, nxt;
}e[2005];
int n, fst[1005];
bool dis[1005], vis[1005];
void addedge(int i, int u, int v, int w)
{
e[i] = (edge){v, w, fst[u]}, fst[u] = i;
}
void DFS(int u)
{
for(int i = fst[u]; i; i = e[i].nxt)
if(!vis[e[i].v])
{
dis[e[i].v] = dis[u] ^ e[i].w;
vis[e[i].v] = true;
DFS(e[i].v);
}
}
void work()
{
DFS(1);
cout<<dis[n]<<endl;
}
void init()
{
cin>>n;
for(int i=1;i<n;i++)
{
int u,v,w;
cin>>u>>v>>w;
addedge(i,u,v,w);
}
}
int main()
{
init();
work();
return 0;
}