답안 #958520

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
958520 2024-04-06T01:04:05 Z Cyber_Wolf 철인 이종 경기 (APIO18_duathlon) C++17
0 / 100
57 ms 37108 KB
#include <bits/stdc++.h>

using namespace std;

#define lg long long
#define fastio ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);

const lg N = 2e5+5;

vector<lg> adj[N],adj2[N], p, comps[N];
lg low[N], ans, n, m, artic[N], tin[N], tmp, vis[N], id[N], ids, sz[N];

void dfs(lg src, lg par = -1)
{
	low[src] = tin[src] = ++tmp;
	p.push_back(src);
	sz[src] = 1;
	for(auto it : adj[src])
	{
		if(it == par)
		{
			continue;
		}
		if(tin[it])
		{
			low[src] = min(low[src], tin[it]);
			continue;
		}
		dfs(it, src);
		sz[src] += sz[it];
		low[src] = min(low[src], low[it]);
		if(low[it] >= tin[src])
		{
			artic[src] = (tin[src] > 1 || tin[it] > 2);	
			id[src] = ++ids;
			comps[id[src]].push_back(src);
			while(comps[id[src]].back() != it)
			{
				id[p.back()] = id[src];
				comps[id[src]].push_back(p.back());
				p.pop_back();
			}
		}
	}
}

void dfs2(lg src)
{
	vis[src] = true;
	for(auto it : adj[src])
	{
		if(vis[it])	continue;
		dfs2(it);
	}
	if(artic[src])
	{
		lg s = comps[id[src]].size();
		for(auto it : comps[id[src]])
		{
			for(auto it2 : adj[it])
			{
				if(artic[it2])	s++;
			}
		}
		ans -= (n-s)*(s-1)*(s-2); // c up, s,f down
		ans -= (n-s)*(n-s-1)*(s-1); // c down, s,f up
		ans -= (n-sz[src])*(sz[src]-1)*4; // artic -> s, f
	}
}

int main()
{
	fastio;
	cin >> n >> m;
	ans = n*(n-1)*(n-2);
	for(int i = 0; i < m; i++)
	{
		lg u, v;
		cin >> u >> v;
		adj[u].push_back(v);
		adj[v].push_back(u);
	}
	dfs(1);
	dfs2(1);
	cout << ans << '\n';

    return 0;
}

/*
123 c
124 c
134 c
132 x
142 x
143 x



*/
# 결과 실행 시간 메모리 Grader output
1 Incorrect 4 ms 19548 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 4 ms 19548 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 57 ms 37064 KB Output is correct
2 Correct 48 ms 37108 KB Output is correct
3 Incorrect 41 ms 32008 KB Output isn't correct
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 5 ms 19544 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 50 ms 30696 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 5 ms 19548 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 53 ms 30776 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 4 ms 19548 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 4 ms 19548 KB Output isn't correct
2 Halted 0 ms 0 KB -