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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include <iostream>
#include <stdio.h>
#include "message.h"
#include "kollib.h"
using namespace std;

int n, m, zap1, zap2, popr, akt, kolejny, miejsce;
int odleg1, odleg2, kandydat;
int pozycja[20000001];

int main()
{
	if(MyNodeId() == 0)
	{
		n = NumberOfStudents();
		
		if(n > 20000000) printf("-1");
		
		pozycja[1] = 1;
		pozycja[FirstNeighbor(1)] = 2;
		popr = 1;
		akt = FirstNeighbor(1);
		miejsce = 3;
		
	    while(1)
	    {
	        kolejny = FirstNeighbor(akt);
	    	if(kolejny == popr) kolejny = SecondNeighbor(akt);
	    	
	    	if(kolejny == 1) break;
	    	
	    	pozycja[kolejny] = miejsce;
	    	popr = akt;
	    	akt = kolejny;
	    	miejsce += 1;
	    }
	    
	    m = NumberOfQueries();
	    
	    for(int i = 0; i < m; i++)
	    {
	    	zap1 = QueryFrom(i+1);
	    	zap2 = QueryTo(i+1);
	    	
	    	kandydat = max(pozycja[zap1],pozycja[zap2])-min(pozycja[zap1],pozycja[zap2]);
	    	
	    	printf("%d\n", min(kandydat, n-kandydat));
	    }
	}
}