Cod sursa(job #2644353)

Utilizator hhhhhhhAndrei Boaca hhhhhhh Data 24 august 2020 12:36:12
Problema Atac Scor 0
Compilator cpp-64 Status done
Runda prbd2 Marime 1.5 kb
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp> // Common file
#include <ext/pb_ds/tree_policy.hpp> // Including tree_order_statistics_node_update
using namespace std;
using namespace __gnu_pbds;
typedef tree<
int,
null_type,
less<int>,
rb_tree_tag,
tree_order_statistics_node_update>
ordered_set;
typedef long long ll;
typedef long double ld;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
ifstream fin("atac.in");
ofstream fout("atac.out");
int t,n,m,p;
ll x,y,a,b,c,d,z=-1;
vector<pii> muchie[32001];
int cost[5][33001];
bool use[1001];
void dfs(int start,int nod,int minim)
{
    cost[start][nod]=minim;
    use[nod]=1;
    for(auto q:muchie[nod])
    {
        int node=q.first;
        int cst=q.second;
        if(!use[node])
            dfs(start,node,min(minim,cst));
    }
}
int main()
{
    ios_base::sync_with_stdio(false);
    fin.tie(0);
    fout.tie(0);
    fin>>n>>m>>p;
    for(int i=2;i<=n;i++)
    {
        int u,v;
        fin>>u>>v;
        muchie[u].push_back({i,v});
        muchie[i].push_back({u,v});
    }
    for(int i=1;i<=1;i++)
    {
        for(int j=1;j<=n;j++)
            use[j]=0;
        dfs(i,i,1e9);
    }
    fin>>x>>y>>a>>b>>c>>d;
    while(m--)
    {
        if(z!=-1)
        {
            x=(x*a+y*b)%n+1;
            y=(y*c+z*d)%n+1;
        }
        if(x==y)
            z=0;
        else
            z=min(cost[1][y],cost[1][x]);
        if(m<p)
            fout<<z<<'\n';
    }
    return 0;
}