#include <stdio.h>
#include <iostream>
#include <vector>
using namespace std;
vector<vector<int> > c;
int M;
int N;
bool po(int a,int li,int b){
if(c[a][b]>li){
return true;
}
for(int i=1;i<=N;i++){
if(a!=i&&c[a][i]>li){
if(po(i,li,b)) {
return true;
}
}
if(i==N)return false;
}
}
int main(){
int Q;
int a,b;
int y;
int v;
int w;
int *ok;
scanf("%d %d",&N,&M);
c= vector<vector<int> >(N+1, vector<int>(N+1,0));
for(int i=1;i<=N;i++){
for(int i2=1;i2<=N;i2++){
c[i][i2]=-1;
}
}
for(int i=0;i<M;i++){
scanf("%d %d %d",&a,&b,&y);
if(c[a][b]<y){
c[a][b]=y;
c[b][a]=y;
}
}
scanf("%d",&Q);
ok=new int[Q];
for(int i=0;i<Q;i++){
ok[i]=1;
scanf("%d %d",&v,&w);
for(int i2=1;i2<=N;i2++){
if(i2!=v&&po(v,w,i2)){
ok[i]++;
}
}
for(int i=0;i<Q;i++){
printf("%d\n",ok[i]);
}
delete []ok;
return 0;
}
abc40のD問題について
abc40のD問題について
http://abc040.contest.atcoder.jp/tasks/abc040_d この問題なのですが、うまく行きません。原因を教えてください。