按题意统计一下就行了,注意重复的要去掉除一下,线的个数就是算一个顶点跟另外两个点连就算,然后那个三角就是三个不同点的环的个数,因为n很小所有暴力枚举算一下就好了
void solve(){
int n,m;
cin>>n>>m;
vector<vector<int>> e(n+1);
map<int,map<int,int>> c;
for(int i=1;i<=m;i++){
int u,v;
cin>>u>>v;
e[v].push_back(u);
e[u].push_back(v);
c[u][v]++;
c[v][u]++;
}
int q=0,p=0;
for(int i=1;i<=n;i++){
int s=e[i].size();
q+=(s*(s-1))/2;
}
for(int i=1;i<=n;i++){
for(auto j:e[i]){
for(auto k:e[j]){
if(c[i][k]){
p++;
}
}
}
}
p/=2;
// cout<<p<<" "<<q<<'\n';
if(p==0){
cout<<0<<'/'<<1<<'\n';
}else{
int d=gcd(p,q);
cout<<p/d<<"/"<<q/d<<'\n';
}
}

京公网安备 11010502036488号