Pagini recente » Istoria paginii utilizator/romaanu | Excursie | Profil moise_alexandru | Xmoto | Cod sursa (job #344944)
Cod sursa(job #344944)
#include <iostream>
#include <fstream>
using namespace std;
int n, m, i, j, q, p, s, x=0, a[10000][10000], nivel;
int df(int nivel, int p, int q);
int main() {
//graful este orientat
FILE *in=fopen("stramosi.in","r"),*out=fopen("stramosi.out","w");
fscanf(in,"%d%d", &n, &m);
/*
for(i=1; i<=n; i++) {
for(j=1; j<=n; j++) {
a[i][j]=0;
}
} */
for(i=1; i<=n; i++) {
fscanf(in,"%d", &j);
if(j) {
a[i][j]=1;
}
}
for(i=1; i<=m; i++) {
fscanf(in,"%d%d", &q, &p);
//persoana q, rang p
nivel=0;
s=df(nivel, p, q);
fprintf(out,"%d\n", s);
}
fclose(in); fclose(out);
return 0;
}
int df(int nivel, int p, int q) {
if(nivel==p) {return q;}
else {
//caut urmatorul nod
for(j=1; j<=n; j++) {
if(a[q][j]==1) {
q=j; x=1; break;
}
}
if(x==0) { return 0; }
x=0;
nivel++; return df(nivel, p, q);
}
}