Pagini recente » Cod sursa (job #263114) | Cod sursa (job #1566320) | Istoria paginii template/moisil-2015 | Cod sursa (job #573859) | Cod sursa (job #2933366)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
vector <int> matrix[100];
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
void citire(void);
void afis(void);
void dfs(int poz);
void sortareTopologica(int poz);
void dfsLevel(int poz, int tata);
int n, m, q, p, TT[100]; //TT = vectorul de tati
int vizitat[100]; //tsort = soratre topologica
int main()
{
fin>>n>>m;
citire();
//dfs(1);
//afis();
while(m--){
fin>>q>>p;
while(p--)
q = TT[q];
fout<<q<<"\n";
}
//afis();
}
void citire(void){
int i, j, n2;
n2 = n;
while(n2--){
fin>>i;
TT[n - n2] = i;
if(i){
matrix[n - n2].push_back(i);
matrix[i].push_back(n - n2);
}
}
}
/*void afis(void){
for(int i = 1; i <= n; i++){
cout<<i<<":";
for(int j = 0; j < (int)matrix[i].size(); j++)
cout<<matrix[i][j]<<" ";
cout<<"\n";
}
for(int i = 1; i <= n; i++)
cout<<TT[i]<<" ";
cout<<"\n";
}*/
void dfs(int poz){
vizitat[poz] = true;
for(int i = 0; i < (int)matrix[poz].size(); i++){ //typecast pt a evita warining-ul de comparatie dintre signed si unsigned
int vecin = matrix[poz][i];
if(vizitat[vecin] == 0){
TT[vecin] = poz;
dfs(vecin);
}
}
}