Pagini recente » Cod sursa (job #187978) | Cod sursa (job #872831) | Utilizatori inregistrati la Concursul Centrelor de Excelenta 2009 | Cod sursa (job #2840890) | Cod sursa (job #1146836)
#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;
}