제출 #797295

#제출 시각아이디문제언어결과실행 시간메모리
797295radaiosm7철인 이종 경기 (APIO18_duathlon)C++98
8 / 100
41 ms11792 KiB
#include <bits/stdc++.h>
using namespace std;
#define X first
#define Y second
int n, m, i, a, b;
long long ans, cc, j;
vector<int> adj[100005];
bool visited[100005];
bool isCycle;

void dfs(int x, int p) {
  visited[x] = true;
  ++cc;

  for (auto y : adj[x]) {
    if (y == p) continue;
    if (visited[y]) isCycle = true;
    else dfs(y, x);
  }
}

int main() {
  scanf("%d%d", &n, &m);

  for (i=0; i < m; ++i) {
    scanf("%d%d", &a, &b);
    adj[a].push_back(b);
    adj[b].push_back(a);
  }

  ans = 0LL;
  fill(visited+1, visited+n+1, false);

  for (i=1; i <= n; ++i) {
    if (!visited[i]) {
      isCycle = false;
      cc = 0LL;
      dfs(i, -1);

      if (cc <= 2LL) continue;
      if (isCycle) ans += cc*(cc-1LL)*(cc-2LL);
      else for (j=2LL; j < cc; ++j) ans += 2LL*(j-1LL)*(cc-j);
    }
  }

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

컴파일 시 표준 에러 (stderr) 메시지

count_triplets.cpp: In function 'int main()':
count_triplets.cpp:23:8: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   23 |   scanf("%d%d", &n, &m);
      |   ~~~~~^~~~~~~~~~~~~~~~
count_triplets.cpp:26:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   26 |     scanf("%d%d", &a, &b);
      |     ~~~~~^~~~~~~~~~~~~~~~
#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...