Submission #138770

#TimeUsernameProblemLanguageResultExecution timeMemory
138770FedericoSDuathlon (APIO18_duathlon)C++14
8 / 100
168 ms14948 KiB
#include <iostream>
#include <vector>
using namespace std;
typedef long long int ll;

ll N,M;
ll x,y;
ll A,B,ans;
bool V[300005];
vector<ll> grafo[300005];

void DFS(int k){

	B++;
	if(V[k])
		return;
	A++;
	V[k]=true;

	for(int f:grafo[k])
		DFS(f);

}

int main(){

	cin>>N>>M;
	for(int i=0;i<M;i++){
		cin>>x>>y;
		grafo[x].push_back(y);
		grafo[y].push_back(x);
	}

	for(int i=1;i<N+1;i++)
		if(!V[i]){
			A=B=0;
			DFS(i);
			if(B-1==2*A)
				ans+=(A*(A-1)*(A-2));
			else	
				ans+=(A*(A-1)*(A-2))/3;
		}

	cout<<ans;

}
#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...