// 存在しない負のサイクル @ エッジの重みは負であってもよい の#include <CStringの> する#include <iostreamの> する#include <アルゴリズム> 使用して 名前空間、STD のconst int型 N = 210、INF = 1E9; INT N-、M、Q。 INT D [N] [N]; // 隣接行列 ボイドフロイド(){ // 動的プログラミング のための(INT K = 1 ; K <= N; K ++ ) のための(INT I = 1 ; I <= N; ++ I ) のために(int型J = 1 ; J <= N。J ++ ) D [i]は[J] =分(D [i]は[J]、D [i]は[K] + D [k]は[J])。 } int型のmain(){ scanf関数(" %D%D%D "、&N、&M&Q)。 以下のために(INT iが= 1 ; I <= N; I ++ ) のための(INT J = 1 ; J <= N; J ++ ) 場合(I == j)はD [i] [j]が= 0 ; // 处理自环 他の D [i]は[J] = INF。 一方、(M - ){ int型A、B、W。 scanf関数(" %D%D%D "、&、&B&W)。 D [A] [B] = 分(D [A] [B]、W)。 } )(フロイド。 一方、(Q - ){ int型A、B。 scanf関数(" %D%D "、&、&B)。 INT T = D [A] [B]。 もし(T> INF / 2)プット(" 不可能" ); 他のprintf(" %d個\ N " 、T); 。