Cod sursa(job #2933368)

Utilizator christalknightChristian Micea christalknight Data 5 noiembrie 2022 09:36:20
Problema Stramosi Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.54 kb
#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(n--){
        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);
            }
        }
    }