Submission #1118730

#TimeUsernameProblemLanguageResultExecution timeMemory
1118730Ntd123Duathlon (APIO18_duathlon)C++14
100 / 100
126 ms30280 KiB
#include <bits/stdc++.h> #define PB push_back #define F first #define S second #define all(x) x.begin(), x.end() #define bit(x, i) ((x >> i) & 1) #define il (node * 2) #define ir (il + 1) #define mid (l + r)/2 #define maxn #define ll long long #define pii pair <int, int> #define MOD 1000000007 #define Task "b2" #define int long long using namespace std; mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); const int N = 200005; int n, m, d, cnt = 0, com = 0, ans = 0; int luu[N], low[N], s[N]; stack <int> st; vector <int> a[N], tree[N]; void DFS(int x, int y){ st.push(x); d++; luu[x] = low[x] = ++ cnt; for (int i: a[x]){ if (i == y) continue; if (luu[i]) low[x] = min(low[x], luu[i]); else { DFS(i, x); low[x] = min(low[x], low[i]); if (luu[x] <= low[i]){ com++; tree[x].PB(com); while (!tree[com].size() || tree[com].back() != i) tree[com].PB(st.top()), st.pop(); } } } } void DFS1(int x){ s[x] = (x <= n); for (int i: tree[x]){ DFS1(i); s[x] += s[i]; if (i <= n) ans -= tree[x].size()*s[i]*(s[i]-1); } if (x > n) ans -= tree[x].size()*(d-s[x])*(d-s[x]-1); } signed main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); if(fopen(Task".inp", "r")) { freopen(Task".inp", "r", stdin); freopen(Task".out", "w", stdout); } cin >> n >> m; com = n; for (int i = 1; i <= m; i ++){ int u, v; cin >> u >> v; a[u].PB(v); a[v].PB(u); } for (int i = 1; i <= n; i ++) if (!luu[i]){ d=0; DFS(i, 0); ans += d*(d-1)*(d-2); DFS1(i); } cout << ans; cerr << "\nTime elapsed: " << 1000.0 * clock() / CLOCKS_PER_SEC << " ms.\n"; return 0; }

Compilation message (stderr)

count_triplets.cpp: In function 'int main()':
count_triplets.cpp:57:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   57 |         freopen(Task".inp", "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
count_triplets.cpp:58:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   58 |         freopen(Task".out", "w", stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...