Submission #65507815


Source Code Expand

#include<bits/stdc++.h>
#pragma GCC optimize("O3")
#pragma GCC optimize("unroll-loops")
using namespace std;
using ll=long long;
using ld=long double;
using ull=unsigned long long;
using i128 = __int128_t;
#define vs vector<string>
#define rep(i,n) for(int i=0;i<int(n);i++)
#define rep2(i,n) for(int i=n-1;i>=0;i--)
#define rep3(i,a,b) for(ll i=a;i<=ll(b);i++)
#define rep4(i,a,b) for(ll i=a;i>=ll(b);i--)
#define forv(i,V) for(const auto& i:V)
#define all(x) x.begin(),x.end()
#define fi first
#define se second
#define SIZE(x) int(x.size())
constexpr ll mod=998244353;
//constexpr ll mod=1000000007;
#define pi 3.14159265358979323
#define INF32 2147483647
#define INF64 9223372036854775807
#define faster ios::sync_with_stdio(false);std::cin.tie(nullptr)
#define pii pair<int, int>
#define pll pair<ll, ll>
#define pb push_back
#define eb emplace_back
#define mp make_pair
#define rev reverse
#define vi vector<int>
#define vll vector<ll>
#define vpi vector<pair<int,int>>
#define vpll vector<pair<ll,ll>>
#define vvi vector<vector<int>>
#define vvll vector<vector<ll>>
#define prq priority_queue
#define lb lower_bound
#define ub upper_bound
#define popcnt __builtin_popcountll
#define TLE while(true);
#define RE assert(false);
#define MLE vector<vector<vector<long long>>> mle_mle(400,vector<vector<long long>>(1000,vector<long long>(1000)));
const string YESNO[2] = {"NO", "YES"};
const string YesNo[2] = {"No", "Yes"};
const string yesno[2] = {"no", "yes"};
#define rall(n) (n).rbegin(),(n).rend()
#define INT(...) int __VA_ARGS__;scan(__VA_ARGS__)
#define LL(...) ll __VA_ARGS__;scan(__VA_ARGS__)
#define STR(...) string __VA_ARGS__;scan(__VA_ARGS__)
#define CHR(...) char __VA_ARGS__;scan(__VA_ARGS__)
#define DBL(...) double __VA_ARGS__;scan(__VA_ARGS__)
#define LD(...) ld __VA_ARGS__;scan(__VA_ARGS__)
template<typename T,typename U>
ostream &operator<<(ostream&os,const pair<T,U>&p){os<<p.first<<" "<<p.second;return os;}
template<typename T,typename U>
istream &operator>>(istream&is,pair<T,U>&p){is>>p.first>>p.second;return is;}
template<typename T>
ostream &operator<<(ostream&os,const vector<T>&v){for(auto it=v.begin();it!=v.end();){os<<*it<<((++it)!=v.end()?" ":"");}return os;}
template<typename T>
istream &operator>>(istream&is,vector<T>&v){for(T &in:v){is>>in;}return is;}
void scan(){}
template<class Head,class... Tail>
void scan(Head&head,Tail&... tail){cin>>head;scan(tail...);}
template<class T>
void print(const T &t){cout<<t<<'\n';}
template<class Head, class... Tail>
void print(const Head &head, const Tail &... tail){cout<<head<<' ';print(tail...);}
template<class... T>
void fin(const T &... a){print(a...);exit(0);}
ll max(int a,ll b){return max((ll)a,b);}
ll max(ll a,int b){return max((ll)b,a);}
ll min(int a,ll b){return min((ll)a,b);}
ll min(ll a,int b){return min((ll)b,a);}
//a以上b以下の個数
template<typename T>
ll RangeOK(ll a,ll b,vector<T> &v){
  return max(ub(all(v),b)-lb(all(v),a),0);
}
template <typename T>
vector<T> compress(vector<T> &X) {
    vector<T> vals = X;
    sort(vals.begin(), vals.end());
    vals.erase(unique(vals.begin(), vals.end()), vals.end());
    for (int i = 0; i < (int)X.size(); i++) {
        X[i] = lower_bound(vals.begin(), vals.end(), X[i]) - vals.begin();
    }
    return vals;
}
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
#include<atcoder/all>
using namespace atcoder;
using mint = modint998244353;
mint dfs(vvi &a, int cnt){
  int n = a.size();
  dsu d(n);
  vi deg(n);
  int degma = 0;
  rep(i, n){
    rep(j, n){
      if(a[i][j]){
        d.merge(i, j);
        deg[i]++;
      }
    }
    degma = max(degma, deg[i]);
  }
  mint ret = 1;
  if(d.groups().size() == cnt + 1){
    int u = count(all(deg), n - cnt);
    if(u == 0) return mint(0);
    rep3(i, 1, u) ret *= i;
    dsu d2(n);
    rep(i, n){
      rep(j, n){
        if(a[i][j] == 1 && deg[i] != n - cnt && deg[j] != n - cnt){
          d2.merge(i, j);
        }
      }
    }
    auto f = d2.groups();
    for(auto x:f){
      if(x.size() == 1) continue;
      vvi a2(n, vi(n));
      rep(i, n){
        if(d2.same(i, x[0])){
          rep(j, n){
            if(d2.same(j, x[0])) a2[i][j] = a[i][j];
          }
        }
      }
      ret *= dfs(a2, n - x.size());
    }
  }else{
    auto f = d.groups();
    for(auto x:f){
      if(x.size() == 1) continue;
      vvi a2(n, vi(n));
      rep(i, n){
        if(d.same(i, x[0])){
          rep(j, n){
            if(d.same(j, x[0])) a2[i][j] = a[i][j];
          }
        }
      }
      ret *= dfs(a2, n - x.size());
    }
  }
  return ret;
}
void solve(){
  INT(n);
  vvi a(n, vi(n));
  scan(a);
  vvll g(n);
  rep(i, n){
    rep(j, n){
      if(a[i][j]) g[i].pb(j);
    }
  }
  vll deg(n);
  rep(i, n) deg[i] = g[i].size();
  if(deg[0] != n){
    print(0);
    return;
  }
  rep(i, n) a[i][0] = 0, a[0][i] = 0;
  print(dfs(a, 1).val());
}
int main(){
  INT(t);
  while(t--) solve();
}

Submission Info

Submission Time
Task D - Ancestor Relation
User QgQ
Language C++ 20 (gcc 12.2)
Score 700
Code Size 5129 Byte
Status AC
Exec Time 155 ms
Memory 137200 KiB

Compile Error

Main.cpp: In function ‘mint dfs(std::vector<std::vector<int> >&, int)’:
Main.cpp:111:24: warning: comparison of integer expressions of different signedness: ‘std::vector<std::vector<int> >::size_type’ {aka ‘long unsigned int’} and ‘int’ [-Wsign-compare]
  111 |   if(d.groups().size() == cnt + 1){
      |      ~~~~~~~~~~~~~~~~~~^~~~~~~~~~

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 700 / 700
Status
AC × 1
AC × 94
Set Name Test Cases
Sample 01_sample_01.txt
All 01_sample_01.txt, 02_small_01.txt, 02_small_02.txt, 02_small_03.txt, 03_mid_1_01.txt, 03_mid_1_02.txt, 03_mid_1_03.txt, 03_mid_1_04.txt, 03_mid_1_05.txt, 03_mid_1_06.txt, 03_mid_1_07.txt, 03_mid_1_08.txt, 03_mid_1_09.txt, 03_mid_1_10.txt, 03_mid_1_11.txt, 03_mid_1_12.txt, 03_mid_1_13.txt, 03_mid_1_14.txt, 03_mid_1_15.txt, 04_mid_2_01.txt, 04_mid_2_02.txt, 04_mid_2_03.txt, 04_mid_2_04.txt, 04_mid_2_05.txt, 04_mid_2_06.txt, 04_mid_2_07.txt, 04_mid_2_08.txt, 04_mid_2_09.txt, 04_mid_2_10.txt, 04_mid_2_11.txt, 04_mid_2_12.txt, 04_mid_2_13.txt, 04_mid_2_14.txt, 04_mid_2_15.txt, 05_mid_3_01.txt, 05_mid_3_02.txt, 05_mid_3_03.txt, 05_mid_3_04.txt, 05_mid_3_05.txt, 06_mid_4_01.txt, 06_mid_4_02.txt, 06_mid_4_03.txt, 06_mid_4_04.txt, 06_mid_4_05.txt, 07_mid_5_01.txt, 07_mid_5_02.txt, 07_mid_5_03.txt, 07_mid_5_04.txt, 07_mid_5_05.txt, 08_max_1_01.txt, 08_max_1_02.txt, 08_max_1_03.txt, 08_max_1_04.txt, 08_max_1_05.txt, 08_max_1_06.txt, 08_max_1_07.txt, 08_max_1_08.txt, 08_max_1_09.txt, 08_max_1_10.txt, 08_max_1_11.txt, 08_max_1_12.txt, 08_max_1_13.txt, 08_max_1_14.txt, 08_max_1_15.txt, 09_max_2_01.txt, 09_max_2_02.txt, 09_max_2_03.txt, 09_max_2_04.txt, 09_max_2_05.txt, 09_max_2_06.txt, 09_max_2_07.txt, 09_max_2_08.txt, 09_max_2_09.txt, 09_max_2_10.txt, 09_max_2_11.txt, 09_max_2_12.txt, 09_max_2_13.txt, 09_max_2_14.txt, 09_max_2_15.txt, 10_max_3_01.txt, 10_max_3_02.txt, 10_max_3_03.txt, 10_max_3_04.txt, 10_max_3_05.txt, 11_max_4_01.txt, 11_max_4_02.txt, 11_max_4_03.txt, 11_max_4_04.txt, 11_max_4_05.txt, 12_max_5_01.txt, 12_max_5_02.txt, 12_max_5_03.txt, 12_max_5_04.txt, 12_max_5_05.txt
Case Name Status Exec Time Memory
01_sample_01.txt AC 1 ms 3584 KiB
02_small_01.txt AC 19 ms 3608 KiB
02_small_02.txt AC 18 ms 3560 KiB
02_small_03.txt AC 19 ms 3556 KiB
03_mid_1_01.txt AC 25 ms 4128 KiB
03_mid_1_02.txt AC 25 ms 3956 KiB
03_mid_1_03.txt AC 26 ms 3976 KiB
03_mid_1_04.txt AC 26 ms 4004 KiB
03_mid_1_05.txt AC 25 ms 4136 KiB
03_mid_1_06.txt AC 26 ms 3912 KiB
03_mid_1_07.txt AC 26 ms 3888 KiB
03_mid_1_08.txt AC 25 ms 4076 KiB
03_mid_1_09.txt AC 26 ms 3956 KiB
03_mid_1_10.txt AC 26 ms 3960 KiB
03_mid_1_11.txt AC 25 ms 3912 KiB
03_mid_1_12.txt AC 26 ms 3940 KiB
03_mid_1_13.txt AC 25 ms 3908 KiB
03_mid_1_14.txt AC 26 ms 3920 KiB
03_mid_1_15.txt AC 26 ms 4028 KiB
04_mid_2_01.txt AC 20 ms 3980 KiB
04_mid_2_02.txt AC 20 ms 3820 KiB
04_mid_2_03.txt AC 20 ms 3904 KiB
04_mid_2_04.txt AC 19 ms 3820 KiB
04_mid_2_05.txt AC 20 ms 3832 KiB
04_mid_2_06.txt AC 19 ms 3840 KiB
04_mid_2_07.txt AC 20 ms 3768 KiB
04_mid_2_08.txt AC 20 ms 3728 KiB
04_mid_2_09.txt AC 20 ms 3852 KiB
04_mid_2_10.txt AC 20 ms 3832 KiB
04_mid_2_11.txt AC 20 ms 4008 KiB
04_mid_2_12.txt AC 20 ms 3832 KiB
04_mid_2_13.txt AC 19 ms 3780 KiB
04_mid_2_14.txt AC 20 ms 3892 KiB
04_mid_2_15.txt AC 20 ms 3856 KiB
05_mid_3_01.txt AC 17 ms 3656 KiB
05_mid_3_02.txt AC 17 ms 3756 KiB
05_mid_3_03.txt AC 17 ms 3628 KiB
05_mid_3_04.txt AC 17 ms 3692 KiB
05_mid_3_05.txt AC 17 ms 3672 KiB
06_mid_4_01.txt AC 34 ms 4064 KiB
06_mid_4_02.txt AC 34 ms 4024 KiB
06_mid_4_03.txt AC 34 ms 4084 KiB
06_mid_4_04.txt AC 34 ms 4040 KiB
06_mid_4_05.txt AC 34 ms 4064 KiB
07_mid_5_01.txt AC 21 ms 3800 KiB
07_mid_5_02.txt AC 21 ms 3812 KiB
07_mid_5_03.txt AC 21 ms 3816 KiB
07_mid_5_04.txt AC 22 ms 3964 KiB
07_mid_5_05.txt AC 22 ms 3856 KiB
08_max_1_01.txt AC 54 ms 10016 KiB
08_max_1_02.txt AC 97 ms 64424 KiB
08_max_1_03.txt AC 17 ms 6952 KiB
08_max_1_04.txt AC 50 ms 10616 KiB
08_max_1_05.txt AC 94 ms 57692 KiB
08_max_1_06.txt AC 16 ms 5616 KiB
08_max_1_07.txt AC 54 ms 12624 KiB
08_max_1_08.txt AC 16 ms 5836 KiB
08_max_1_09.txt AC 16 ms 4924 KiB
08_max_1_10.txt AC 53 ms 11332 KiB
08_max_1_11.txt AC 104 ms 70500 KiB
08_max_1_12.txt AC 16 ms 4912 KiB
08_max_1_13.txt AC 53 ms 13288 KiB
08_max_1_14.txt AC 102 ms 69772 KiB
08_max_1_15.txt AC 15 ms 4928 KiB
09_max_2_01.txt AC 20 ms 7148 KiB
09_max_2_02.txt AC 46 ms 20020 KiB
09_max_2_03.txt AC 16 ms 4576 KiB
09_max_2_04.txt AC 44 ms 10672 KiB
09_max_2_05.txt AC 39 ms 16796 KiB
09_max_2_06.txt AC 15 ms 4944 KiB
09_max_2_07.txt AC 26 ms 7456 KiB
09_max_2_08.txt AC 76 ms 41732 KiB
09_max_2_09.txt AC 16 ms 4924 KiB
09_max_2_10.txt AC 46 ms 11132 KiB
09_max_2_11.txt AC 38 ms 15820 KiB
09_max_2_12.txt AC 16 ms 5128 KiB
09_max_2_13.txt AC 21 ms 7280 KiB
09_max_2_14.txt AC 97 ms 66084 KiB
09_max_2_15.txt AC 16 ms 4936 KiB
10_max_3_01.txt AC 16 ms 5032 KiB
10_max_3_02.txt AC 16 ms 5020 KiB
10_max_3_03.txt AC 17 ms 5040 KiB
10_max_3_04.txt AC 17 ms 5024 KiB
10_max_3_05.txt AC 17 ms 5236 KiB
11_max_4_01.txt AC 155 ms 137200 KiB
11_max_4_02.txt AC 32 ms 15740 KiB
11_max_4_03.txt AC 98 ms 69976 KiB
11_max_4_04.txt AC 70 ms 42980 KiB
11_max_4_05.txt AC 23 ms 9988 KiB
12_max_5_01.txt AC 20 ms 7268 KiB
12_max_5_02.txt AC 18 ms 5664 KiB
12_max_5_03.txt AC 19 ms 6340 KiB
12_max_5_04.txt AC 17 ms 5644 KiB
12_max_5_05.txt AC 18 ms 7076 KiB