제출 #1335319

#제출 시각아이디문제언어결과실행 시간메모리
1335319aaaaaaaa철인 이종 경기 (APIO18_duathlon)C++20
5 / 100
1095 ms444 KiB
#include<bits/stdc++.h>
using namespace std;

const int mxN = 51;

set<int> adj[mxN];
bitset<mxN> g[mxN][mxN];
int n, m, vis[mxN];
long long ans = 0;

void dfs(int u, int st){
    vis[u] = 1;
    for(auto it : adj[u]){
        if(!vis[it]){
            g[st][it] |= g[st][u];
            dfs(it, st);
        }
    }
    vis[u] = 0;
}

signed main(){
	ios_base::sync_with_stdio(0);
	cin.tie(nullptr); cout.tie(nullptr);

    cin >> n >> m;

    for(int i = 1, u, v ; i <= m; ++i){
        cin >> u >> v; --u, --v;
        adj[u].insert(v);
        adj[v].insert(u);
    }

    for(int i = 0; i < n; ++i){
        for(int j = 0; j < n; ++j){
            g[i][j][j] = 1;
            g[i][i][i] = 1;
        }
    }

    for(int i = 0; i < n; ++i){
        dfs(i, i);
    }

    for(int i = 0; i < n; ++i){
        for(int j = i + 1; j < n; ++j){
            ans += max(0ll, (long long) g[i][j].count() - 2);
        }
    }

    cout << ans * 2ll << "\n";

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