#include <kollib.h> #include <stdio.h> #include <message.h> main() { if(MyNodeId()==0) { int i,n=NumberOfStudents(),t[n],at[n],m=NumberOfQueries(),p; t[0]=1; t[1]=FirstNeighbor(1); for(i=2;i<n;i++) { if(FirstNeighbor(t[i-1])==t[i-2]) t[i]=SecondNeighbor(t[i-1]); else t[i]=FirstNeighbor(t[i-1]); } for(i=0;i<n;i++) at[t[i]]=i; for(i=1;i<=m;i++) { p=at[QueryFrom(i)]-at[QueryTo(i)]; if(p<0) p=-p; if(p>n/2) p=n-p; printf("%d\n",p); } } return 0; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | #include <kollib.h> #include <stdio.h> #include <message.h> main() { if(MyNodeId()==0) { int i,n=NumberOfStudents(),t[n],at[n],m=NumberOfQueries(),p; t[0]=1; t[1]=FirstNeighbor(1); for(i=2;i<n;i++) { if(FirstNeighbor(t[i-1])==t[i-2]) t[i]=SecondNeighbor(t[i-1]); else t[i]=FirstNeighbor(t[i-1]); } for(i=0;i<n;i++) at[t[i]]=i; for(i=1;i<=m;i++) { p=at[QueryFrom(i)]-at[QueryTo(i)]; if(p<0) p=-p; if(p>n/2) p=n-p; printf("%d\n",p); } } return 0; } |