Pagini recente » Cod sursa (job #2268510) | Cod sursa (job #3036814) | Cod sursa (job #1987873) | Cod sursa (job #1464509) | Cod sursa (job #1835805)
#include <fstream>
#include <iostream>
#include <limits.h>
#include<queue>
using namespace std;
#define Nmax 22000
ifstream fin("atac.in");
ofstream fout("atac.out");
vector < pair <int,int> > PP;
int N, a[Nmax][Nmax],A,B,C,D,M,P,X,Y;
void RoyFloyd()
{
int i, j, k;
for(k = 1; k <=N; k++)
for(i = 1; i <= N; i++)
for(j = 1; j <= N; j++)
if(i != j && a[i][k] && a[k][j] && (a[i][j] > a[i][k] + a[k][j] || !a[i][j]))
a[i][j] = min(a[i][k],a[k][j]);
}
void Print()
{
for(int i=M-P; i<M; ++i)
{
fout<<a[PP[i].first][PP[i].second]<<"\n";
}
}
void Pairs()
{
PP.push_back(make_pair(X,Y));
for(int i=1;i<M;++i)
{
int Z=a[PP[i-1].first][PP[i-1].second];
PP.push_back(make_pair((PP[i-1].first*A + PP[i-1].second*B) % N + 1,(PP[i-1].second*C + Z*D) % N + 1));
}
}
int main()
{
fin >> N>>M>>P;
int i, U,V;
for(i = 2; i <=N; i++){
fin>> U>>V;
a[U][i]=V;
a[i][U]=V;
}
fin>>X>>Y>>A>>B>>C>>D;
RoyFloyd();
Pairs();
Print();
return 0;
}