Cod sursa(job #1146836)

Utilizator IonSebastianIon Sebastian IonSebastian Data 19 martie 2014 12:29:51
Problema Atac Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.29 kb
#include <fstream>
#include <vector>


using namespace std;

ifstream in("atac.in");
ofstream out("atac.out");

const int MAX_N = 32000;

int n, m, p, a, b, c, d;

int bomb[15][MAX_N+1], stram[15][MAX_N+1], euler[15][2*MAX_N+2], nr, poz[MAX_N+1];

vector<int> vecini[MAX_N+1];

void dfs(int tata)
{
    int i,fiu;
    euler[1][++nr] = tata;
    poz[tata] = nr;
    for(i = 0;i < vecini[tata].size(); i++)
    {
        fiu = vecini[tata][i];
        dfs(fiu);
        euler[1][++nr] = tata;
    }
}

int log2(int x)
{
    if(x == 1)
    {
        return 0;
    }
    int nr = 0;
    while(x != 1)
    {
        x /= 2;
        nr++;
    }
    return nr;
}

int min(int a, int b)
{
    return (a<b)?a:b;
}

int lca(int a, int b)
{
    int i, x, y, lim;
    if(a!=b)
    {
        x=min(poz[a],poz[b]);
        y=max(poz[a],poz[b]);
        lim=y-x-1;
        lim=log2(lim);
        p=1<<lim;
        rez=min(parcurgere[lim+1][x],parcurgere[lim+1][y-p]);
        return rez;
    }
    return a;
}

int main()
{
    int i, j, x, y;
    in >> n >> m >> p;
    for(i = 2; i <= n; i++)
    {
        in >> stram[0][i] >> bomb[0][i];
        vecini[stram[0][i]].push_back(i);
    }
    dfs(1);
    euler[1][0]=nr;
    in >> x >> y >> a >> b >> c >> d;
}