#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; } |
English