답안 #973879

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
973879 2024-05-02T12:14:16 Z dubabuba 철인 이종 경기 (APIO18_duathlon) C++14
0 / 100
73 ms 22356 KB
#include <bits/stdc++.h>
using namespace std;

#define int long long
typedef long long i64;
typedef pair<int, int> pii;
#define ff first
#define ss second
#define MP make_pair

const int mxn = 2e5 + 10;
vector<int> adj[mxn];
vector<pii> edges;

i64 kv_sum[mxn]; int col[mxn];
i64 sum_kv[mxn]; int chi[mxn];
int n, m;

int colour(int u) {
	if(col[u] < 0) return u;
	return col[u] = colour(col[u]);
}

bool unite(int u, int v) {
	u = colour(u);
	v = colour(v);
	if(u == v) return 0;

	if(col[u] > col[v]) swap(u, v);
	col[u] += col[v];
	col[v] = u;
	return 1;
}

bool vis[mxn];
i64 ans = 0;
void dfs(int u, int par) {
	vis[u] = 1;
	for(int v : adj[u]) {
		if(v == par) continue;
		if(vis[v]) continue;
		dfs(v, u);
		chi[u] += chi[v];
		kv_sum[u] += chi[v] * chi[v];
		sum_kv[u] += chi[v];
	}

	sum_kv[u] *= sum_kv[u];
	chi[u]++;

	i64 t = sum_kv[u] * sum_kv[u] - kv_sum[u] * kv_sum[u];
	ans += t / 2;

	i64 total = -col[colour(u)];
	i64 s = total - chi[u];
	i64 f = chi[u] - 1;
	ans += s * f;
}

int32_t main() {
	cin >> n >> m;
	memset(col, -1, sizeof col);
	for(int i = 0; i < m; i++) {
		int u, v;
		cin >> u >> v;
		adj[u].push_back(v);
		adj[v].push_back(u);
		unite(u, v);
	}

	for(int u = 1; u <= n; u++)
		if(!vis[u])
			dfs(u, u);
	cout << 2 * ans << endl;
	return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 11352 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 11352 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 66 ms 22356 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 11356 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 73 ms 15052 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 3 ms 11356 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 72 ms 15052 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 11352 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 11352 KB Output isn't correct
2 Halted 0 ms 0 KB -