Submission #1265826

#TimeUsernameProblemLanguageResultExecution timeMemory
1265826mhn_neekSubtree (INOI20_subtree)C++20
12 / 100
590 ms1114112 KiB
// IN THE NAME OF GOD #include<bits/stdc++.h> using namespace std; typedef long long int lli; typedef pair<lli,lli> pii; typedef vector<lli> ve; typedef vector<pii> vp; const lli N = 5e5 + 100; const lli mod = 1e9+7; const lli INF = 1e18; #define PB push_back #define MP make_pair #define fi first #define se second #define debug(x) cerr<<(#x)<<" "<<x<<endl #define FOR(x,y) for(lli x = 0; x < y ;x++) #define FORS(x,y) for(lli x = 1; x <= y ;x++) #define lb lower_bound #define ub upper_bound #define all(x) x.begin(),x.end() struct DSU{ lli par[N],rnk[N],sz[N]; void build(lli X){ FOR(i,X+4) par[i] = i,sz[i]= 1,rnk[i] = 0; } lli Find(lli u){ return (par[u] == u ? u : par[u] = Find(par[u])); } void Merge(lli a,lli b){ a = Find(a),b = Find(b); if(a==b)return; if(rnk[a] < rnk[b])swap(a,b);; rnk[a] = max(rnk[a],rnk[b]+1); sz[a] += sz[b]; par[b] = a; } }; lli n,m; ve adj[N]; lli dp[N]; DSU dsu; void dfs(lli u,lli par = 0){ dp[u] = 1; for(lli v : adj[u]){ if(v != par){ dfs(v,u); dp[u] = dp[u]*(dp[v]+1)%mod; } } } int main(){ ios_base::sync_with_stdio(false);cin.tie(0),cout.tie(0); cin>>n>>m; vp E; FOR(i,m){ lli a,b; cin>>a>>b; adj[a].PB(b); adj[b].PB(a); E.PB(MP(a,b)); } if(m > n-1){ lli ans = 0; vector<bool> b(n,0); for(lli mask = 0; mask < (1<<n); mask ++){ FOR(i,n)b[i] = 0; dsu.build(n); lli ver = -1; lli cnt = 0; FOR(i,n){ lli p = (1<<i); if((mask&p) > 0)b[i] = 1,ver= i+1,cnt++; } if(ver == -1)continue; lli ec = 0; for(auto i : E){ if(b[i.fi-1] && b[i.se-1]){ dsu.Merge(i.fi,i.se); ec ++; } } if(dsu.sz[dsu.Find(ver)] == cnt && cnt == ec+1){ ans ++; } } cout<<ans<<endl; } dfs(1); lli ans = 0; FORS(i,n) ans = (ans + dp[i])%mod; cout<<ans<<endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...