大概评级:橙。
送分题。
题意就是让你统计有多少条边是重边或自环。
设 \(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;
}