1 // イタリアこの質問こと:各ポイント間のすべての最初に、mは到達できない含む、プログラムは、ほとんどのスパニングツリーを取得し、 2 // K変数は無用です。 3 @ 式:ANS =マトリックスのマトリックス-マトリックス構築されたエッジ、 4 // 行列どうか==行列側アップ行列で定義されるように、通常、それを内蔵J 5。の#include <stdio.hの> 6。の#include < 文字列 .H> 7。の#include <math.h>の 8の#include <アルゴリズム> 9。 使用した 名前空間STD; 10 の#defineのINF 0x3f3f3f3f 11 の#define LLロングロングINT 12は CONST INT MAXN = 55 ; 13は、 LL A [MAXN] [ MAXN]; 14 LL B [MAXN] [MAXN]。 15 LL決定基(int型N) 16 { 17 LLのRES = 1 。 18 のために(int型 i = 1 ; iが<= N; iが++ ){ 19 場合(!B [i]は[I]){ 20 ブールフラグ= 偽。 21 のための(int型 J = I + 1、J <= nであり、j ++ ){ 22 であれば(B [j] [i])と{ 23 フラグ= 真。 24 のための(int型 K = I、K <nであり、k ++){ 25 スワップ(B [i]が[K]、B [j] [K])。 26 } 27の RES = - RES。 28 ブレーク; 29 } 30 } 31 であれば(!フラグ) 32 リターン 0 。 33 } 34 のために(INT J = I + 1、J <= nであり、j ++ ){ 35 ながら(B [j] [i])と{ 36 LLのT = B [i]は[I] / B [j] [i]と; 37 のための(int型K = I; K <= N; kは++ ){ 38 B [i]は[K] = B [i]は[K] -t * B [j] [k]は、 39 スワップ(B [i]が[K]、B [j] [K])。 40 } 41の RES = - RES。 42 } 43 } 44の RES * = B [i]は[I]。 45 } 46の リターンRES。 47 } 48 のint main()の 49 { 50 int型N、M、K。 51 一方(〜のscanf(" %D%D%D "、&N、&M&K))//用いない卵は、完全に無視することができないK 52である { 53である のmemset(A、0、はsizeof (A))、 54である のmemset(B、0、はsizeof (B))、 55 のために(INT I = 1 ; I <= M。 I ++は{) 56が INT ; A、B 57は、 scanfの(" %Dの%のD "、&A、&B); 58 A [A] [B]は= [B] [A]を= 1 ; 59 } 60 のために(INT = I 1、I <= N; I ++ ){ 61である ため(INT J = 1。 ; J <= N; J ++ ){ 62は、 IF(!I = J && {[I] [J]) 63である B [I] [I] ++ ; 64 B [I] [ J] = - 1 ; // 隣接行列を減算 65 } 66 } 67 } 68 N- = N- 1。; 69 LL = ANSの決定基(N-); 70 のprintf(" %LLDの\のN- " 、ANS); 71である } 72 リターン 0; 73 }