Water Park 70/100 (un caso errato)


#1

Vorrei capire perchè mi da solo un caso errato nel subtask 3

#include

using namespace std;

bool giaPushato[1000000];
queue coda;
vector<vector> grafo;
long double* value;
int N, M, P;

void walk(int n){
int div=grafo[n].size();

for(int i=0; i<div; i++){
	if(!giaPushato[grafo[n][i]]){
		giaPushato[grafo[n][i]]=true;
		coda.push(grafo[n][i]);
	}
	value[grafo[n][i]]+=value[n]/div;
	    
}

while(!coda.empty()){
    int prossimo=coda.front();
    coda.pop();
    walk(prossimo);
}

}

int main(){

ifstream in("input.txt");
ofstream out("output.txt");

in>>N>>M>>P;

grafo.assign(N,vector<int>());
value=new long double[N];
for(int i=0; i<M; i++){
	int a, b;
	in>>a>>b;
	grafo[a].push_back(b);
}

value[0]=1;
for(int i=1; i<N; i++){
	value[i]=0;
}
giaPushato[0]=true;

walk(0);

out<<distance(value, max_element(value+N-P, value+N));

return 0;

}


#2

Ho risolto il problema