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

浙公网安备 33010602011771号