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;
}

posted @ 2025-07-01 16:02  PX侠客行  阅读(17)  评论(0)    收藏  举报