Pagini recente » Cod sursa (job #1713164) | Cod sursa (job #1832629) | Cod sursa (job #322307) | Cod sursa (job #2052977) | Cod sursa (job #1142093)
#include <bitset>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("painting.in");
ofstream fout("painting.out");
const int MAXN = 100009;
int N, M;
vector < int > G[MAXN];
bitset < MAXN > used;
struct culoare
{
int cul, ti;
} v[MAXN];
void initializare()
{
G[0].push_back(1);
for (int i = 0; i <= N; ++i)
{
v[i].cul = 1;
v[i].ti = 0;
}
}
void citire()
{
fin >> N >> M;
initializare();
for (int i = 1; i < N; ++i)
{
int x, y;
fin >> x >> y;
G[x].push_back(y);
}
for (int i = 1; i <= M; ++i)
{
int x, y;
fin >> x >> y;
v[x].cul = y;
v[x].ti = i;
}
}
void DFS(int nod, int tata)
{
used[nod] = true;
if ( v[tata].ti > v[nod].ti )
{
v[nod].cul = v[tata].cul;
v[nod].ti = v[tata].ti;
}
int L = G[nod].size();
for (int i = 0; i < L; ++i)
{
int fiu = G[nod][i];
if ( !used[fiu] )
DFS(fiu, nod);
}
}
void afisare()
{
for (int i = 1; i <= N; ++i)
fout << v[i].cul << " ";
}
int main ()
{
citire();
DFS(1, 0);
afisare();
fin.close();
fout.close();
return 0;
}