Skip to content

Commit dfdc7b6

Browse files
Merge pull request #21 from rajhimanshumax/patch-8
Create TreeXor.cpp
2 parents d551410 + 16ff2ff commit dfdc7b6

File tree

1 file changed

+84
-0
lines changed

1 file changed

+84
-0
lines changed

TreeXor.cpp

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
#include<bits/stdc++.h>
2+
using namespace std;
3+
4+
#define pfi(a) printf("%d",a);
5+
#define pfl(a) printf("%lld",a);
6+
#define ss second
7+
#define ff first
8+
#define pfin(a) printf("%d\n",a);
9+
#define pfln(a) printf("%lld\n",a);
10+
#define pfis(a) printf("%d ",a);
11+
#define pfls(a) printf("%lld ",a);
12+
#define sfi(a) scanf("%d",&a);
13+
#define sfl(a) scanf("%lld",&a);
14+
#define fast ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL)
15+
#define f(i,a,b) for(int i=a;i<b;i++)
16+
#define pb(a) push_back(a);
17+
#define mp(a,b) make_pair(a,b)
18+
#define ll long long
19+
20+
const ll mod=1e9+7;
21+
22+
vector<ll> v1[100005];
23+
bool vis[100005]={false};
24+
ll par[100005]={0};
25+
ll child[100005]={0};
26+
ll xr[100005]={0};
27+
void dfs(ll s)
28+
{
29+
ll i;
30+
vis[s]=true;
31+
for(i=0;i<v1[s].size();i++)
32+
{
33+
ll k=v1[s][i];
34+
if(vis[k]==false)
35+
{
36+
child[s]++;
37+
par[k]=s;
38+
dfs(k);
39+
}
40+
}
41+
}
42+
43+
int main()
44+
{
45+
ll n,k,i;
46+
sfl(n);
47+
sfl(k);
48+
for(i=0;i<n-1;i++)
49+
{
50+
ll a,b;
51+
sfl(a);
52+
sfl(b);
53+
v1[a].pb(b);
54+
v1[b].pb(a);
55+
}
56+
dfs(1);
57+
xr[1]=0;
58+
for(i=2;i<=n;i++)
59+
{
60+
61+
// cout<<i<<" "<<par[i]<<" "<<child[i]<<endl;
62+
if(child[par[i]]>=k)
63+
{
64+
xr[i]=par[i]^xr[par[i]];
65+
}
66+
else
67+
{
68+
xr[i]=xr[par[i]];
69+
}
70+
}
71+
72+
for(i=1;i<=n;i++)
73+
{
74+
cout<<xr[i]<<endl;
75+
}
76+
77+
78+
79+
80+
81+
82+
83+
return 0;
84+
}

0 commit comments

Comments
 (0)