ABC393C题解

大概评级:橙。

送分题。

题意就是让你统计有多少条边是重边或自环。

\(u_i\) 表示第 \(i\) 条边的左端点,\(v_i\) 表示第 \(i\) 条边的右端点。

那么如果 \(u_i = v_i\),那么第 \(i\) 条边为自环,然后我们只需要使用 map 记录每一条边是否出现就行了,然后每读入一条边,如果当前边已经出现,那么就说明出现了重边,注意是无向图,所以读入 \(u_i,v_i\) 时,要两种方向都标记。

代码:

#include<bits/stdc++.h>
using namespace std;
map<pair<int,int>,int>mp;
signed main()
{
	int n,m;
	scanf("%d %d",&n,&m);
	int num = 0;
	for(int i = 1;i<=m;i++)
	{
		int x,y;
		scanf("%d %d",&x,&y);
		if(x == y)
		{
			num++;
			continue;
		}
		if(mp.find({x,y})!=mp.end())
		{
			num++;
			continue;
		}
		mp[{x,y}] = 1;
		mp[{y,x}] = 1;
	}
	printf("%d",num);
	return 0;
}
posted @ 2025-02-22 15:07  林晋堃  阅读(272)  评论(0)    收藏  举报