NC227323. Baby's first game on graph
描述
输入描述
第一行两个整数和,表示给定图的点数和边数。
下面m行,每行两个整数,表示一条无向边。
输入保证图是连通的,且无自环和重边。
输出描述
输出一个数字,为游戏结束后A所持有的金钱的变化量。
示例1
输入:
4 4 1 2 2 3 3 4 4 1
输出:
114512
C++ 解法, 执行用时: 283ms, 内存消耗: 13108K, 提交时间: 2022-01-01 04:47:16
#include<bits/stdc++.h> #define fori(s,t) for(int i=s;i<t;i++) using namespace std; int a[100005],b[100005],n,m,l,r,t,u,v;vector<int> c[100005];priority_queue<pair<int,int>> q; int main(){ cin>>n>>m; fori(1,m+1)cin>>l>>r,a[l]++,a[r]++,c[l].push_back(r),c[r].push_back(l); fori(1,n+1)q.push({-a[i],i}); while(q.size()){ u=q.top().second;q.pop(); if(b[u])continue;b[u]=1; t=max(t,a[u]); fori(0,c[u].size())if(!b[v=c[u][i]])q.push({-(--a[v]),v}); }cout<<114514-t<<'\n'; }