2013年12月3日 星期二
Codeforces Round #216 (Div. 2) C - Valera and Elections
#include<stdio.h>
#include<string.h>
#include<vector>
using namespace std;
int v[100005]={0},ans=0;
vector<int> arr;
struct P{
int a,b;
};
vector<P> vec[100005];
int dfs(int k,int is,int ed){
int i,r,add=0,flag=0;
for(i=0;i<vec[k].size();i++){
r=vec[k][i].a;
if(v[r]==0){
add++;
v[r]=1;
if(vec[k][i].b){
flag=1,dfs(r,vec[k][i].b,r);
}
else{
flag|=dfs(r,vec[k][i].b,ed);
}
}
}
if(flag) return 1;
else{
if(is) ans++,arr.push_back(k);
return 0;
}
}
int main(){
int n,x,y,t,i;
scanf("%d",&n);
for(i=0;i<n-1;i++){
scanf("%d%d%d",&x,&y,&t);
vec[x].push_back((P){y,t-1});
vec[y].push_back((P){x,t-1});
}
v[1]=1;
dfs(1,0,0);
printf("%d\n",ans);
for(i=0;i<ans;i++){
if(i) putchar(' ');
printf("%d",arr[i]);
}
puts("");
}
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言