Pagini recente » Cod sursa (job #136282) | Cod sursa (job #2158007) | Cod sursa (job #1810635) | Cod sursa (job #3176683) | Cod sursa (job #29293)
Cod sursa(job #29293)
#include "fstream.h"
ifstream f("atac.in");
ofstream g("atac.out");
#define N 32001
#define M 500001
struct muchie
{
int n1,n2,c;
}mu[N];
long m,p,n,a,b,c,d,viz[N],co[N],v[N],x,y;
void citire()
{
int i;
long cost;
f>>n>>m>>p;
for(i=1;i<=n-1;i++)
{
f>>x>>cost;
mu[i].n1=x;
mu[i].n2=i+1;
mu[i].c=cost;
viz[i]=1;
}
f>>x>>y>>a>>b>>c>>d;
}
int cnx()
{
int i,j,min,max;
for(i=1;i<=n;i++)
co[i]=i;
for(j=1;j<=n-1;j++)
if(viz[j])
if(co[mu[j].n1]!=co[mu[j].n2])
{
if(co[mu[j].n1]<co[mu[j].n2])
{
min=co[mu[j].n1];
max=co[mu[j].n2];
}
else
{
min=co[mu[j].n2];
max=co[mu[j].n1];
}
for(i=1;i<=n;i++)
if(co[i]==max)
co[i]=min;
}
if(co[x]!=co[y])
return 0;
return 1;
}
int main()
{
citire();
long i,per,min;
for(i=1;i<=n;i++)
viz[i]=1;
for(per=1;per<=m;per++)
{
min=M;
for(i=1;i<n;i++)
{
viz[i]=0;
if(!cnx())
{
if(min>mu[i].c)
min=mu[i].c;
viz[i]=1;
}
viz[i]=1;
}
v[per]=min;
x=((a*x+y*b)%n)+1;
y=((y*c+d*v[per])%n)+1;
}
for(i=m;i>=p;i--)
g<<v[i]<<"\n";
return 0;
}