Pagini recente » Cod sursa (job #3343725) | Cod sursa (job #3274340) | Cod sursa (job #3335739) | Cod sursa (job #2495174) | Cod sursa (job #1837490)
#include <fstream>
#include <iostream>
#include <limits.h>
#include<queue>
using namespace std;
#define Nmax 32005
#define oo 2000000000
ifstream fin("atac.in");
ofstream fout("atac.out");
vector < pair <int,int> > PP;
vector < pair <int,int> > G[Nmax];
int N,A,B,C,D,M,P,X,Y,Use[Nmax],Z,ZZ[Nmax],z,j;
bool t=0;
void Read()
{
fin>>N>>M>>P;
for(int i = 2; i <= N; ++i)
{
int x,c,y;
fin>>y>>c;
G[i].push_back(make_pair(y,c));
G[y].push_back(make_pair(i,c));
}
}
void DFS(int Nod,int Y,int Z)
{
Use[Nod] = 1; int R=Z;
for(unsigned int i = 0; i < G[Nod].size(); ++i)
{
int Vecin =G[Nod][i].first;
int cost=G[Nod][i].second;
if(Vecin==Y){Z=min(Z,cost); z=Z;}
else{
Z=min(Z,cost);
if(!Use[Vecin]){
DFS(Vecin,Y,Z);
}
}
}
Z=R;
}
void Print()
{
for(int j=M-P+1; j<=M; ++j)
{
fout<<ZZ[j]<<"\n";
}
}
void Pairs()
{
PP.push_back(make_pair(X,Y));
for(int i=1;i<=M;++i)
{
for(int k=1; k<=Nmax; k++){
Use[k]=0;
}
Z=oo;
DFS(X,Y,Z); j++; ZZ[j]=z;
X=(PP[i-1].first*A + PP[i-1].second*B) % N + 1;
Y=(PP[i-1].second*C + z*D) % N + 1;
PP.push_back(make_pair(X,Y));
z=0;
}
}
int main()
{
Read();
fin>>X>>Y>>A>>B>>C>>D;
Pairs();
Print();
return 0;
}