【练习】图论

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


}
相关推荐
逻辑留白陈1 小时前
Adaboost进阶:与主流集成算法对比+工业级案例+未来方向
算法
Learn Beyond Limits1 小时前
Mean Normalization|均值归一化
人工智能·神经网络·算法·机器学习·均值算法·ai·吴恩达
天选之女wow1 小时前
【代码随想录算法训练营——Day28】贪心算法——134.加油站、135.分发糖果、860.柠檬水找零、406.根据身高重建队列
算法·leetcode·贪心算法
Gohldg2 小时前
C++算法·贪心例题讲解
c++·数学·算法·贪心算法
远远远远子2 小时前
类与对象 --1
开发语言·c++·算法
Aaplloo2 小时前
【无标题】
人工智能·算法·机器学习
西望云天2 小时前
The 2024 ICPC Asia Nanjing Regional Contest(2024南京区域赛EJKBG)
数据结构·算法·icpc
10岁的博客2 小时前
容器化安装新玩法
算法
不会算法的小灰2 小时前
HTML简单入门—— 基础标签与路径解析
前端·算法·html
flashlight_hi3 小时前
LeetCode 分类刷题:1901. 寻找峰值 II
python·算法·leetcode