#include "kollib.h"
#include "message.h"
#include <cstdio>
#include <algorithm>
int main()
{
int n=NumberOfStudents();
int m=NumberOfQueries();
int k=NumberOfNodes();
int j=MyNodeId();
int krok=m/k;
if(krok==0)krok++;
for(int i=j;i<m;i+=krok)
{
// zapytanie numer i
int pocz=QueryFrom(i+1);
int kon=QueryTo(i+1);
if(pocz==kon)
{
PutInt(0,0);
Send(0);
continue;
}
int poprz=pocz;
int akt=FirstNeighbor(pocz);
int odl1=1;
while(akt!=kon)
{
int tmp=akt;
int l=FirstNeighbor(akt);
int p=SecondNeighbor(akt);
if(l==poprz)akt=p;
else akt=l;
odl1++;
poprz=tmp;
}
poprz=pocz;
akt=SecondNeighbor(pocz);
int odl2=1;
while(akt!=kon)
{
int tmp=akt;
int l=FirstNeighbor(akt);
int p=SecondNeighbor(akt);
if(l==poprz)akt=p;
else akt=l;
odl2++;
poprz=tmp;
}
PutInt(0,std::min(odl1,odl2));
Send(0);
}
if(j==0)
{
for(int i=0;i<m;i++)
{
int nr=i%krok;
Receive(nr);
printf("%d\n",GetInt(nr));
}
}
}
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 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | #include "kollib.h" #include "message.h" #include <cstdio> #include <algorithm> int main() { int n=NumberOfStudents(); int m=NumberOfQueries(); int k=NumberOfNodes(); int j=MyNodeId(); int krok=m/k; if(krok==0)krok++; for(int i=j;i<m;i+=krok) { // zapytanie numer i int pocz=QueryFrom(i+1); int kon=QueryTo(i+1); if(pocz==kon) { PutInt(0,0); Send(0); continue; } int poprz=pocz; int akt=FirstNeighbor(pocz); int odl1=1; while(akt!=kon) { int tmp=akt; int l=FirstNeighbor(akt); int p=SecondNeighbor(akt); if(l==poprz)akt=p; else akt=l; odl1++; poprz=tmp; } poprz=pocz; akt=SecondNeighbor(pocz); int odl2=1; while(akt!=kon) { int tmp=akt; int l=FirstNeighbor(akt); int p=SecondNeighbor(akt); if(l==poprz)akt=p; else akt=l; odl2++; poprz=tmp; } PutInt(0,std::min(odl1,odl2)); Send(0); } if(j==0) { for(int i=0;i<m;i++) { int nr=i%krok; Receive(nr); printf("%d\n",GetInt(nr)); } } } |
English