abc40のD問題について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
hukuda
記事: 5
登録日時: 9年前

abc40のD問題について

#1

投稿記事 by hukuda » 9年前

http://abc040.contest.atcoder.jp/tasks/abc040_d この問題なのですが、うまく行きません。原因を教えてください。

コード:

#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;
}

“C言語何でも質問掲示板” へ戻る