제출 #1197445

#제출 시각아이디문제언어결과실행 시간메모리
1197445hackstar철인 이종 경기 (APIO18_duathlon)C++20
0 / 100
27 ms9800 KiB
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#include<bits/stdc++.h>

using namespace std;
using namespace __gnu_pbds;

template <typename T>
using ordered_set = tree<T,null_type,less<T>,rb_tree_tag,tree_order_statistics_node_update>;
template <typename T>
using ordered_multiset = tree<T,null_type,less_equal<T>,rb_tree_tag,tree_order_statistics_node_update>;

#pragma GCC optimize("Ofast,O3,unroll-loops")
#pragma GCC target("avx,avx2")

#define int long long
#define ll long long
#define pii pair<int,int>
#define ff first
#define ss second
#define vi vector<int>
#define all(x) (x).begin(),(x).end()
#define rall(x) (x).rbegin(),(x).rend()

template<typename T1,typename T2>
istream& operator>>(istream& cin,pair<T1,T2>& s){
	cin>>s.first>>s.second;
	return cin;
}
template<typename T1,typename T2>
ostream& operator<<(ostream& cout,pair<T1,T2>& s){
	cout<<s.first<<' '<<s.second<<'\n';
	return cout;
}
template<typename T>
istream& operator>>(istream& cin,vector<T>& a){
	for(T& x:a){
		cin>>x;
	}
	return cin;
}
template<typename T>
ostream& operator<<(ostream& cout,vector<T>& a){
	for(T& x:a){
		cout<<x<<' ';
	}
	return cout;
}

const int inf=1e18;

struct node {
	int a, b, c;
	bool operator<(const node& other) const {
	    return tie(a, b, c) < tie(other.a, other.b, other.c);
	}
    };

void solve(){
	int n,m;
	cin>>n>>m;
	vector<vector<int>>g(n);
	for(int i=0;i<m;i++){
		int u,v;
		cin>>u>>v;
		u--,v--;
		g[u].emplace_back(v);
		g[v].emplace_back(u);
	}
	vector<int>vis(n,0);
	auto dfs=[&](auto dfs,int u)->int{
		vis[u]=1;
		int ans=1;
		for(auto v:g[u]){
			if(!vis[v]){
				ans+=dfs(dfs,v);
			}
		}
		return ans;
	};
	int ans=0;
	for(int i=0;i<n;i++){
		if(vis[i]){
			continue;
		}
		int cur=dfs(dfs,i);
		ans+=cur*(cur-1)*(cur-2);
	}
	cout<<ans;
}

signed main(){
	cin.tie(nullptr)->sync_with_stdio(false);
	int t=1;
	#ifdef LOCAL
		freopen("input.txt", "r", stdin);
		freopen("output.txt", "w", stdout);
	#endif
	//cin>>t;
	while(t--){
		solve();
	}
}
#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...