【练习】图论

F. Friendly Group

图中选择一个点-1

边两端点都选择+1

边一个端点选择-1

添加链接描述

复制代码
#include<iostream>
using namespace std;
#include<vector>
#include<cstring>
const int N=300010;
int n,m;
vector<int> G[N];
int temp1,temp2;
bool vis[N];int num[N];
void dfs(int u){
vis[u]=1;
temp1++;//点数
temp2+=G[u].size()-num[u];//边数

for(auto v:G[u]){
    if(!vis[v])num[v]++;//v的邻边中已算过的边个数
}

for(auto v:G[u]){
if(!vis[v])dfs(v);
}
}

int main(){
int T;cin>>T;
for(int tt=1;tt<=T;tt++){
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++)G[i].clear();
    memset(vis,0,sizeof(vis));memset(num,0,sizeof(num));
    while(m--){
        int u,v;scanf("%d%d",&u,&v);
        G[u].push_back(v);G[v].push_back(u);
    }

   int ans=0;
    for(int i=1;i<=n;i++){
            if(!vis[i]){
            temp1=0;temp2=0;
            dfs(i);
            ans+=max(0,temp2-temp1);
            }
    }
printf("Case #%d: %d\n",tt,ans);
}


}
相关推荐
mit6.82415 分钟前
固定中间
算法
老马啸西风23 分钟前
成熟企业级技术平台 MVE-010-跳板机 / 堡垒机(Jump Server / Bastion Host)
人工智能·深度学习·算法·职场和发展
立志成为大牛的小牛1 小时前
数据结构——五十九、冒泡排序(王道408)
数据结构·学习·程序人生·考研·算法
s09071361 小时前
下视多波束声呐进行测绘作业注意事项
算法·海洋测绘·下视多波束
papership1 小时前
【入门级-数据结构-3、特殊树:完全二叉树的定义与基本性质】
数据结构·算法
中國龍在廣州1 小时前
AI顶会ICML允许AI参与审稿
人工智能·深度学习·算法·机器学习·chatgpt
立志成为大牛的小牛1 小时前
数据结构——六十、快速排序(王道408)
数据结构·程序人生·考研·算法·排序算法
Dev7z1 小时前
基于MATLAB的GA–PSO混合算法无线传感器网络节点部署优化研究
网络·算法·matlab
koo3641 小时前
12.14周报
人工智能·算法