【练习】图论

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


}
相关推荐
w_zero_one2 小时前
递归算法(一)
java·开发语言·算法
风影同志783243 小时前
20 个比特能装下多少行情?——实测拆解 Kronos 的 K 线分词器
算法
写的都是BUG4 小时前
APK 里的钥匙,一直就放在门口:聊聊加固真正该做什么
前端·算法
地平线开发者4 小时前
CLIP 的零样本分类:一组文本如何变成图像分类器?
算法
京东云开发者5 小时前
从“会生成”到“能生产”:萤火虫 AIGC 平台的 AI Infra 实践
算法·aigc·产品
youshi66685 小时前
PID——算法改进
算法
一只不想敲代码的程序猿6 小时前
如何更高效地拆解问题?
算法
微尘hjx7 小时前
【Deep-OC-SORT 02】多轨迹算法Deep-OC-SORT-相对 OC-SORT 的改进点
人工智能·算法·yolo·目标跟踪·视觉检测·ultralytics·deep-oc-sort
梦帮科技7 小时前
意识启发式量子隧穿退火算法用于全局优化 (CITA) 完整技术指南
网络·人工智能·算法·量子计算·模拟退火算法
一去不复返的通信er8 小时前
排序 + 双指针:力扣15三数之和
算法·leetcode