#include <iostream>
#include <vector>
#include "message.h"
#include "kollib.h"
using namespace std;
int ilosc_inst;
int moja_inst;
int n, m;
int a, b, tmpa, tmpb, tmp;
int licznik;
struct wynik{
int nr, wyn;
}wyn;
int w[209];
int f(int from, int to){
licznik=0;
if(from==to)
return licznik;
licznik++;
a=FirstNeighbor(from);
b=SecondNeighbor(from);
tmpa=tmpb=from;
while(a!=to && b!=to){
licznik++;
tmp=FirstNeighbor(a);
if(tmp==tmpa){
tmpa=a;
a=SecondNeighbor(a);
}
else{
tmpa=a;
a=tmp;
}
/***************/
tmp=FirstNeighbor(b);
if(tmp==tmpb){
tmpb=b;
b=SecondNeighbor(b);
}
else{
tmpb=b;
b=tmp;
}
}
return licznik;
}
int main(){
ilosc_inst=NumberOfNodes();
moja_inst=MyNodeId();
n=NumberOfStudents();
m=NumberOfQueries();
for(int d=moja_inst+1; d<=m; d+=ilosc_inst){
wyn.nr=d;
wyn.wyn=f(QueryFrom(d), QueryTo(d));
if (moja_inst > 0) {
PutInt(0, wyn.nr);
PutInt(0, wyn.wyn);
}
else
w[wyn.nr]=wyn.wyn;
}
if (moja_inst > 0 && m>moja_inst )
Send(0);
if (moja_inst == 0) {
for(int i=1; i<ilosc_inst; i++){
if((m/ilosc_inst + ((m%ilosc_inst)>i?1:0)) >0 )
Receive(i);
for(int j=0; j<(m/ilosc_inst + ((m%ilosc_inst)>i?1:0)); j++){
w[GetInt(i)]=GetInt(i);
}
}
for(int i=1; i<=m; i++)
cout << w[i] << "\n";
}
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 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 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | #include <iostream> #include <vector> #include "message.h" #include "kollib.h" using namespace std; int ilosc_inst; int moja_inst; int n, m; int a, b, tmpa, tmpb, tmp; int licznik; struct wynik{ int nr, wyn; }wyn; int w[209]; int f(int from, int to){ licznik=0; if(from==to) return licznik; licznik++; a=FirstNeighbor(from); b=SecondNeighbor(from); tmpa=tmpb=from; while(a!=to && b!=to){ licznik++; tmp=FirstNeighbor(a); if(tmp==tmpa){ tmpa=a; a=SecondNeighbor(a); } else{ tmpa=a; a=tmp; } /***************/ tmp=FirstNeighbor(b); if(tmp==tmpb){ tmpb=b; b=SecondNeighbor(b); } else{ tmpb=b; b=tmp; } } return licznik; } int main(){ ilosc_inst=NumberOfNodes(); moja_inst=MyNodeId(); n=NumberOfStudents(); m=NumberOfQueries(); for(int d=moja_inst+1; d<=m; d+=ilosc_inst){ wyn.nr=d; wyn.wyn=f(QueryFrom(d), QueryTo(d)); if (moja_inst > 0) { PutInt(0, wyn.nr); PutInt(0, wyn.wyn); } else w[wyn.nr]=wyn.wyn; } if (moja_inst > 0 && m>moja_inst ) Send(0); if (moja_inst == 0) { for(int i=1; i<ilosc_inst; i++){ if((m/ilosc_inst + ((m%ilosc_inst)>i?1:0)) >0 ) Receive(i); for(int j=0; j<(m/ilosc_inst + ((m%ilosc_inst)>i?1:0)); j++){ w[GetInt(i)]=GetInt(i); } } for(int i=1; i<=m; i++) cout << w[i] << "\n"; } return 0; } |
English