Advertisement
Guest User

Untitled

a guest
Mar 21st, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.97 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int cnt,t1,t2,n,k,che[500005],mem[500005],topo[500005],a[500005][3];
  4. char c1;
  5. void TOPO(int x){
  6. // printf("%d\n",x);
  7. if(che[x] || x==0) return ;
  8. che[x]=1;
  9. for(int i=0;i<2;i++)
  10. {
  11. TOPO(a[x][i]);
  12. }
  13. topo[cnt--]=x;
  14. }
  15. int main(){
  16. int i,j;
  17. scanf("%d%d",&k,&n);
  18. cnt=n;
  19. for(i=1;i<=n;i++)
  20. {
  21. scanf(" %c%d%d",&c1,&t1,&t2);
  22. if(c1=='L') a[i][0]=t1,a[i][1]=t2,a[i][2]=0;
  23. if(c1=='R') a[i][0]=t2,a[i][1]=t1,a[i][2]=1;
  24. }
  25. for(i=1;i<=n;i++) TOPO(i);
  26. // for(i=1;i<=n;i++) printf("Topo[%d]=%d\n",i,topo[i]);
  27. mem[1]=k;
  28. for(i=1;i<=n;i++)
  29. {
  30. t2=mem[topo[i]]/2;
  31. t1=mem[topo[i]]-t2;
  32. mem[a[topo[i]][0]]+=t1;
  33. mem[a[topo[i]][1]]+=t2;
  34. }
  35. for(i=1;i<=n;i++)
  36. for(i=1;i<=n;i++)
  37. {
  38. a[i][2]=(a[i][2]+mem[i])%2;
  39. if(a[i][2]==0) printf("L");
  40. if(a[i][2]==1) printf("R");
  41. }
  42. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement