C++
#include <cstdio>
#include <vector>
#include <queue>
#include <cstring>
#include <climits>
#include <algorithm>
using namespace std;
struct Info{
int a=INT_MAX;
int b=INT_MAX;
int c=INT_MAX;
};
vector<int> vec[100010];
vector<int> result;
int N,A,B,C,M,result2=0;
int check[100010],parent[100010], pc[100010];
Info info[100010];
void dfs(int n){
for(auto q: vec[n]){
if(pc[q]==0){
pc[q] = pc[n];
dfs(q);
}
}
}
int find_path(int v, int p, int t)
{
if(v==t){
pc[v]=v;
return 1;
}
for(auto q: vec[v]){
if(q==p)
continue;
int a=find_path(q,v,t);
if(a==1){
pc[v]=v;
return 1;
}
}
return 0;
}
/*void BFS(int idx,int target){
memset(check,0,sizeof(check));
memset(parent,0,sizeof(parent));
queue <int> q;
check[idx]=1;
parent[idx]=-1;
q.push(idx);
int r=0;
while(!q.empty()){
int f=q.front();
q.pop();
if(f==target){
break;
}
for(auto p: vec[f]){
if(check[p]==0){
check[p]=1;
parent[p]=f;
q.push(p);
}
}
}
int i=target;
while(i!=-1){
/*if(find(result.begin(),result.end(),i)==result.end()){
result2++;
result.push_back(i);
}
pc[i] = i;
i = parent[i];
}
}*/
int result_BFS(int idx){
if(find(result.begin(),result.end(),idx)!=result.end())
return idx;
memset(check,0,sizeof(check));
queue <int> q;
check[idx]=1;
q.push(idx);
int r=0;
while(!q.empty()&&r<3){
int f=q.front();
q.pop();
if(find(result.begin(),result.end(),f)!=result.end()){
return f;
}
for(auto p: vec[f]){
if(check[p]==0){
check[p]=1;
q.push(p);
}
}
}
}
int main()
{
scanf("%d",&N);
for(int i=1;i<=N-1;i++){
int a,b;
scanf("%d %d",&a,&b);
vec[a].push_back(b);
vec[b].push_back(a);
}
scanf("%d %d %d",&A,&B,&C);
find_path(A,0,B);
find_path(A,0,C);
//BFS(B,C);
/*int result2=0;
for(int i=1;i<=N;i++){
int a=1;
for(int j=1;j<=N;j++){
if(i==j)
continue;
if(info[i].a<info[j].a||info[i].b<info[j].b||info[i].c<info[j].c){
continue;
}
a=0;
break;
}
if(a==1){
result2++;
result.push_back(i);
}
}*/
result2 = 0;
for(int i=1;i<=N;i++){
if(pc[i]== i)
{
dfs(i);
result2++;
}
}
scanf("%d",&M);
printf("%d\n",result2);
for(int i=1;i<=M;i++){
int a;
scanf("%d",&a);
printf("%d\n",pc[a]);
}
return 0;
}
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
공지 | 안내사항 | 관리자 | 2019.12.02 | 175 |
201 | 4893 | 관리자 | 2019.12.20 | 145 |
200 | 4878 | 관리자 | 2019.12.20 | 145 |
199 | 4848 | 관리자 | 2019.12.20 | 148 |
198 | 4698 | 관리자 | 2019.12.20 | 144 |
197 | 4685 | 관리자 | 2019.12.20 | 202 |
196 | 4073 | 관리자 | 2020.04.06 | 156 |
195 | 4068 | 관리자 | 2020.04.06 | 213 |
194 | 4065 | 관리자 | 2019.12.20 | 151 |
193 | 4064 | 관리자 | 2020.04.06 | 153 |
192 | 4059 | 관리자 | 2020.04.06 | 5937 |
191 | 4055 | 관리자 | 2020.04.06 | 152 |
190 | 4044 | 관리자 | 2020.04.06 | 157 |
189 | 4043 | 관리자 | 2020.04.06 | 151 |
188 | 4040 | 관리자 | 2020.04.06 | 150 |
187 | 4039 | 관리자 | 2019.12.20 | 153 |
» | 4035 | 관리자 | 2020.04.06 | 155 |
185 | 4034 | 관리자 | 2020.04.06 | 147 |
184 | 4028 | 관리자 | 2020.04.06 | 165 |
183 | 4023 | 관리자 | 2019.12.20 | 174 |
182 | 3740 | 관리자 | 2019.12.20 | 212 |
181 | 3730 | 관리자 | 2019.12.20 | 176 |
180 | 3719 | 관리자 | 2019.12.20 | 154 |
179 | 3716 | 관리자 | 2019.12.20 | 143 |
178 | 3713 | 관리자 | 2019.12.20 | 164 |
177 | 3712 | 관리자 | 2019.12.20 | 161 |
176 | 3709 | 관리자 | 2019.12.20 | 147 |
175 | 3708 | 관리자 | 2019.12.20 | 114 |
174 | 3707 | 관리자 | 2019.12.20 | 109 |
173 | 3705 | 관리자 | 2019.12.20 | 112 |