This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
#define int long long
bool sub3(vector<vector<int>> &G){
for(int i=0;i<G.size();i++)if(G[i].size() > 2) return false;
return true;
}
struct Unionfind{
vector<int> par, siz;
//初期化
Unionfind(int n) : par(n,-1) , siz(n,1) {}
int root(int x) {
if(par[x] == -1) return x;
else return par[x] = root(par[x]);
}
bool issame(int x,int y) {
return root(x) == root(y);
}
bool unite(int x, int y){
x = root(x); y = root(y);
if(x == y) return false;
if(siz[x] < siz[y]) swap(x,y);
par[y] = x;
siz[x] += siz[y];
return true;
}
int size(int x) {
return siz[root(x)];
}
};
signed main(){
int N,M;
cin>>N>>M;
vector<vector<int>> G(N);
for(int i=0;i<M;i++){
int a,b;
cin>>a>>b;
a--;
b--;
G[a].push_back(b);
G[b].push_back(a);
}
int ans = 0;
for(int i=0;i<N;i++)for(int j=i+1;j<N;j++){
queue<pair<int,int>> q;
set<pair<int,int>> s;
int ans_ = 0;
q.push({(1<<i),i});
while(!q.empty()){
pair<int,int> pos = q.front();
q.pop();
if(s.count(pos)) continue;
s.insert(pos);
int a,b;
a = pos.first, b = pos.second;
for(int c:G[b]){
if(a&(1<<c)) continue;
if(c == j){
ans_ |= a;
continue;
}
q.push({a+(1<<c),c});
}
}
for(int k=0;k<N;k++)if(i-k && j-k && ans_&(1<<k)) ans++;
}
cout<<ans*2<<endl;
}
Compilation message (stderr)
count_triplets.cpp: In function 'bool sub3(std::vector<std::vector<long long int> >&)':
count_triplets.cpp:5:16: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::vector<long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
5 | for(int i=0;i<G.size();i++)if(G[i].size() > 2) return false;
| ~^~~~~~~~~
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |