#22947: c 演算錯誤+不知道如何停止 求大神幫


abc975318642@gmail.com (明明是AC)

學校 : 國立新營高級中學
編號 : 109565
來源 : [210.59.67.8]
最後登入時間 :
2020-10-29 14:47:22
b967. 4. 血緣關係 -- 2016年3月apcs | From: [210.59.67.11] | 發表日期 : 2020-10-13 20:11

就像是這樣

#include <stdio.h> #include <stdlib.h> int output; int map[100000][3]; int r[1000000]; int r_h,r_t,r_count,r_control; int N; int dad,son; int main() { while(scanf("%d",&N)!=0){ for(int i =0;i<N;i++){ map[i][0]=-1; } for(int i=1;i<N;i++){ scanf("%d%d",&dad,&son); map[son][0]=dad; map[dad][1]=-1; } r_count=0; r_h=0; for(int i=0;i<N;i++){ if(map[i][1]==0){ r[r_count]=i; r_count++; } } r_t=r_count-1; r_control=0; while(r_control==0){ for(int i=r_h;i<=r_t;i++){ if(map[r[i]][0]==-1){ r_control=1; break; } if(map[map[r[i]][0]][1]<(map[r[i]][1]+1)){ map[map[r[i]][0]][2]=map[map[r[i]][0]][1]; map[map[r[i]][0]][1]=map[r[i]][1]+1; } else if(map[map[r[i]][0]][2]<(map[r[i]][1]+1)){ map[map[r[i]][0]][2]=map[r[i]][1]+1; } r[r_count]=map[r[i]][0]; r_count++; } r_h=r_t+1; r_t=r_count-1; } output = 0; for(int i=0;i<N;i++){ if(output<map[i][1]+map[i][2]) output = map[i][1]+map[i][2]; else if(output<map[i][1]+1) output = map[i][1]+1; } printf("%d\n",output); } return 0; }
 
ZeroJudge Forum