Submission #492267

#TimeUsernameProblemLanguageResultExecution timeMemory
492267xyzDuathlon (APIO18_duathlon)C++17
0 / 100
1074 ms7052 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

const int N = 1e5 + 20;

vector<int> g[N], path;
set<tuple<int, int, int>> st;
bool vis[N];
//ll result;

void zfs(int v){
      vis[v] = true;
      path.push_back(v);
      for(int i = 1; i < (int)path.size() - 1; i ++)
            st.insert(make_tuple(path[0], path[i], v));
      for(int x : g[v]){
            if(vis[x])
                  continue;
            zfs(x);
      }
      path.pop_back();
      vis[v] = false;
}

int main(){
      ios_base :: sync_with_stdio(0);
      cin.tie(0); cout.tie(0);
      int n, m;
      cin >> n >> m;
      for(int i = 0; i < m; i ++){
            int u, v;
            cin >> u >> v;
            -- u; -- v;
            g[v].push_back(u);
            g[u].push_back(v);
      }
      if(n <= 50){
            for(int i = 0; i < n; i ++)
                  zfs(i);
            cout << st.size();
            return 0;
      }
}
#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...