ABC393_C题解
题意
给定一张n个点,m条边的无向图
求存在多少条重边与自环
这里可以直接将边记录下来,每次读入新边时判断
1、是否与已存入的边相同(判断重边)
2、起点与终点是否相同(判断自环)
#include <bits/stdc++.h>
using namespace std;
const int N=5e5+5;
vector<int>G[N];//邻接表存边
int n,m,u,v,ans;
//pd函数用于判断新读入的边是否是重边
bool pd(){
for(auto w:G[u]){
if(w==v){
//如果新边与之前存入的边相同
ans++;
return 1;
}
}
return 0;
}
int main(){
cin>>n>>m;
for(int i=1;i<=m;i++){
cin>>u>>v;
//如果起点与终点一致,那么这条边构成了一个自环
if(u==v){
ans++;
continue;
}
if(pd()){
continue;
}
//保存既不是重边,又不构成自环的边
G[u].push_back(v);
G[v].push_back(u);
}
cout<<ans;
return 0;
}

浙公网安备 33010602011771号