#include<bits/stdc++.h> using namespace std; const int N = 505; const long long mod = 1e4+7; long long det(long long A[N][N],int n)// 0 ~ n-1 求行列式的值 { for (int i = 0; i < n; ++i) { for (int j = 0; j < n; ++j) { A[i][j] = (A[i][j] % mod + mod) % mod; } } long long tmp = 1; for (int i = 0; i < n; ++i) { for (int j = i + 1; j < n; ++j) { while (A[j][i]) { long long t = A[i][i] / A[j][i]; for (int k = i; k < n; ++k) { A[i][k] = (A[i][k] - t * A[j][k]) % mod; } swap(A[i], A[j]); tmp *= -1; } } if (!A[i][i]) return 0; tmp = A[i][i] * tmp % mod; } return (tmp + mod) % mod; } /* 入度矩陣對應的外向樹,出度矩陣對應着內向樹(都是指向父親的邊的事是出度或者入度)無根樹就是兩條有向邊都加上 有向樹必須刪掉根所在的那一行和一列,無根樹能夠任意 而後對於這n−1階的矩陣求一個行列式就是最小生成樹的個數 */ int main() { }