Submission #103230

#TimeUsernameProblemLanguageResultExecution timeMemory
103230E869120Duathlon (APIO18_duathlon)C++14
8 / 100
213 ms11768 KiB
#include <iostream>
#include <vector>
using namespace std;
#pragma warning (disable: 4996)

long long N, M, A[200009], B[200009], col[100009], cnt1, cnt2; vector<int>X[100009];

void dfs(int pos) {
	if (col[pos] >= 1) return;
	col[pos] = 1; cnt1 += 1; cnt2 += X[pos].size();
	for (int i = 0; i < X[pos].size(); i++) {
		dfs(X[pos][i]);
	}
}

int main() {
	scanf("%lld%lld", &N, &M);
	for (int i = 1; i <= M; i++) {
		scanf("%lld%lld", &A[i], &B[i]);
		X[A[i]].push_back(B[i]);
		X[B[i]].push_back(A[i]);
	}
	
	long long ans = 0;
	for (int i = 1; i <= N; i++) {
		if (col[i] >= 1) continue;
		cnt1 = 0; cnt2 = 0;
		dfs(i); cnt2 /= 2;

		if (cnt1 == cnt2) ans += 1LL * cnt1 * (cnt1 - 1) * (cnt1 - 2);
		else ans += 1LL * cnt1 * (cnt1 - 1) * (cnt1 - 2) / 3LL;
	}

	printf("%lld\n", ans);
	return 0;
}

Compilation message (stderr)

count_triplets.cpp:4:0: warning: ignoring #pragma warning  [-Wunknown-pragmas]
 #pragma warning (disable: 4996)
 
count_triplets.cpp: In function 'void dfs(int)':
count_triplets.cpp:11:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (int i = 0; i < X[pos].size(); i++) {
                  ~~^~~~~~~~~~~~~~~
count_triplets.cpp: In function 'int main()':
count_triplets.cpp:17:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%lld%lld", &N, &M);
  ~~~~~^~~~~~~~~~~~~~~~~~~~
count_triplets.cpp:19:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%lld%lld", &A[i], &B[i]);
   ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
#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...