11725번 - 트리의 부모 찾기
vector 써서는 코드를 짰는데, if else만으로도 풀릴것같은 이문제가 계속틀렸다고나오네요.
반례가 뭐일까요? 질문검색과 ex 로는 잘돌아가네요 ㅠ
#include <stdio.h>
int arr[100005];int que[100005][2];int main() { arr[1]=1; int n; int count=-1; scanf("%d",&n);
for(int i=0; i<n; i++) { int num1, num2; scanf("%d %d",&num1,&num2); if(arr[num1]>0) arr[num2]=num1; else if(arr[num2]>0) arr[num1]=num2; else if(arr[num1]==0 && arr[num2]==0) { count++; que[count][0]=num1; que[count][1]=num2; } } while(count >= 0) { int x = que[count][0]; int y = que[count][1]; if(arr[x]>0) arr[y]=x; else if(arr[y]>0) arr[x]=y;
count--; } for(int i=2; i<=n; i++) printf("%d\n",arr[i]); return 0;}
댓글을 작성하려면 로그인해야 합니다.
shghdwo123 6년 전
vector 써서는 코드를 짰는데, if else만으로도 풀릴것같은 이문제가 계속틀렸다고나오네요.
반례가 뭐일까요? 질문검색과 ex 로는 잘돌아가네요 ㅠ
#include <stdio.h>
int arr[100005];
int que[100005][2];
int main() {
arr[1]=1;
int n;
int count=-1;
scanf("%d",&n);
for(int i=0; i<n; i++)
{
int num1, num2;
scanf("%d %d",&num1,&num2);
if(arr[num1]>0)
arr[num2]=num1;
else if(arr[num2]>0)
arr[num1]=num2;
else if(arr[num1]==0 && arr[num2]==0)
{
count++;
que[count][0]=num1;
que[count][1]=num2;
}
}
while(count >= 0)
{
int x = que[count][0];
int y = que[count][1];
if(arr[x]>0)
arr[y]=x;
else if(arr[y]>0)
arr[x]=y;
count--;
}
for(int i=2; i<=n; i++)
printf("%d\n",arr[i]);
return 0;
}