AhmedAshraff

Untitled

Aug 1st, 2025
46
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.33 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2.  
  3. using namespace std;
  4. typedef long long ll;
  5. #define sz(s) (int)(s).size()
  6. #define all(s) s.begin(),s.end()
  7.  
  8. void Speed() {
  9.     ios_base::sync_with_stdio(false);
  10.     cin.tie(NULL);
  11. }
  12. struct DSU {
  13.     int n;
  14.     vector<int> par, siz;
  15.     int cnt;
  16.     DSU(int n) {
  17.         this->n = n;
  18.         par = siz = vector<int>(n + 5);
  19.         for (int g = 1; g <= n; g++)par[g] = g, siz[g] = 1;
  20.         cnt = n;
  21.     }
  22.  
  23.     int find(int i) {
  24.         if (i == par[i])return i;
  25.         return par[i] = find(par[i]);
  26.     }
  27.  
  28.     void merge(int a, int b) {
  29.         a = find(a);
  30.         b = find(b);
  31.         if (a == b)return;
  32.         if (siz[a] < siz[b])
  33.             swap(a, b);
  34.         par[b] = a;
  35.         siz[a] += siz[b];
  36.         cnt--;
  37.     }
  38. };
  39. void solve() {
  40.     int n;
  41.     cin >> n;
  42.     DSU dsu(n);
  43.     for (int g = 1; g <= n; g++)
  44.         for (int i = 1; i <= n; i++) {
  45.             int x;
  46.             cin >> x;
  47.             if (x > 0)
  48.                 dsu.merge(g, i);
  49.         }
  50.     int comp = dsu.cnt;
  51.     assert(comp <= 26);
  52.     const int mod = 1e9 + 7;
  53.     ll ans = 1;
  54.     for (int g = 1; g <= comp; g++)
  55.         ans = ans * (27ll - g) % mod;
  56.     cout << ans << "\n";
  57. }
  58. int main() {
  59.     Speed();
  60.     int tc = 1;
  61.     cin >> tc;
  62.     while (tc--) {
  63.         solve();
  64.     }
  65.     return 0;
  66. }
Advertisement
Add Comment
Please, Sign In to add comment