이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
using namespace std;
using ll = long long;
#define int ll
const int MOD = 1e9 + 7;
int N, M; bool vis[200005];
int res, cur, BBC, S[200005];
int timer, tin[200005], low[200005];
vector<int> adj[200005], C[200005];
vector<int> stck;
void dfs(int v, int p) {
tin[v] = low[v] = timer++; ++cur;
vis[v] = 1; stck.push_back(v);
for(auto u : adj[v]) {
if(u == p) continue;
if(vis[u]) low[v] = min(low[v], tin[u]);
else {
dfs(u, v);
low[v] = min(low[v], low[u]);
if(low[u] >= tin[v]) {
C[v].push_back(N + ++BBC);
while(C[N + BBC].empty() || C[N + BBC].back() != u) {
C[N + BBC].push_back(stck.back());
stck.pop_back();
}
}
}
}
}
void solve(int v) {
S[v] = (v <= N);
for(auto u : C[v]) {
solve(u); S[v] += S[u];
if(v > N) res -= C[v].size() * S[u] * (S[u] - 1ll);
}
if(v > N) res -= C[v].size() * (cur - S[v]) * (cur - S[v] - 1ll);
}
int32_t main() {
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin >> N >> M;
for(int l = 0; l < M; l++) {
int U, V; cin >> U >> V;
adj[U].push_back(V);
adj[V].push_back(U);
}
for(int l = 1; l <= N; l++) {
if(vis[l]) continue;
cur = 0; dfs(l, l); solve(l);
res += cur * (cur - 1ll) * (cur - 2ll);
}
cout << res << "\n";
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |