hdu 1232 畅通工程

简介: 点击打开链接hdu 1232 思路:最小生成树 + 并查集 分析:简单的最小生成树的题目,直接上模板即可。或直接并查集 /*法一:*/#include#include#include#includeusing namesp...

点击打开链接hdu 1232


思路:最小生成树 + 并查集

分析:简单的最小生成树的题目,直接上模板即可。或直接并查集


/*法一:*/
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std;
#define MAXN 1010

int n , m;
int father[MAXN];/*存储节点的父亲节点*/
int rank[MAXN];/*存储根节点的儿子节点的个数*/
struct Edge{
   int x;   
   int y;
}e[MAXN];

/*并查集的初始化*/
void init_Set(){
     for(int i = 0 ; i < MAXN ; i++){
        father[i] = i;
        rank[i] = 0;
     }
}

/*递归查找*/
int Find_Set(int x){
    if(father[x] != x)
       father[x] = find_Set(father[x]); 
    return father[x];
}

/*集合的合并*/
void Union(int root_x ,int root_y){
     if(rank[root_x] > rank[root_y])
        father[root_y] = root_x;
     else{
        if(rank[root_x] == rank[root_y]) 
            rank[root_y]++;
        father[root_x] = root_y;
     }
}

void solve(){
     int ans = 0;
     init_Set();/*初始化并查集*/
     for(int i = 0 ; i < m ; i++){   
        int root_x = Find_Set(e[i].x);
        int root_y = Find_Set(e[i].y);
        if(root_x != root_y){
           ans++;
           Union(root_x , root_y);
        }
     }
     printf("%d\n" , n-1-ans);
}

int main(){
    while(scanf("%d%d" , &n , &m) , n){
        for(int i = 0 ; i < m ; i++)
           scanf("%d%d" , &e[i].x , &e[i].y);
        solve();
    }
    return 0;
}


/*法二:*/
#include<algorithm>
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
#define INF 0xFFFFFFF
#define MAXN 1010

int G[MAXN][MAXN];
int lowcost[MAXN];
int vis[MAXN];
int n , m , ans;

/*Prime算法的模板*/
void Prime(){
         int pos , min;
         ans = 0;
         memset(vis , 0 , sizeof(vis));/*初始化为0*/
         vis[1] = 1;/*第一个点标记为1*/
         for(int i = 1 ; i <= n ; i++)/*初始化lowcost数组*/
               lowcost[i] = G[1][i];
         for(int i = 1 ; i <= n ; i++){/*枚举n个顶点*/
               min = INF;/*初始化为INF*/
               for(int j = 1 ; j <= n ; j++){/*找到最小权边对应顶点*/
                     if(!vis[j] && min > lowcost[j]){
                          min = lowcost[j];
                          pos = j;
                     }
               }
               if(min == INF)/*如果min = INF表示已经不再有点可以加入最小生成树中*/
                   break;
               ans += min;
               vis[pos] = 1;/*加入最小生成树中*/
               for(int j = 1 ; j <= n ; j++){/*更新可更新边的权值*/
                     if(!vis[j] && lowcost[j] > G[pos][j])/*更新lowcost*/
                          lowcost[j] = G[pos][j];
            } 
         }
         printf("%d\n" , ans);
}

int main(){
    //freopen("input.txt" , "r" , stdin);
    int a , b;
    while(scanf("%d%d" , &n , &m) , n){
         for(int i = 1 ; i <= n ; i++){
            for(int j = 1 ; j <= n ; j++)
               G[i][j] = 1;
         }
         for(int i = 0 ; i < m ; i++){
            scanf("%d%d" , &a , &b);
            G[a][b] = G[b][a] = 0;
         }
         Prime();   
    }
    return 0;
}





 


目录
相关文章
|
7月前
|
机器学习/深度学习 缓存 关系型数据库
《深度解析LightGBM与MySQL数据集成:高效机器学习的新范式》
LightGBM与MySQL的深度集成,为机器学习提供从数据到模型预测的完整解决方案。通过高效的数据管道、智能缓存及压缩技术,实现海量数据低延迟访问,支持实时特征工程与增量训练。该方案突破传统ETL瓶颈,保障生产环境可靠性,未来还将拓展联邦学习与元数据驱动等方向,推动数据智能深度融合,加速AI产业落地。
164 21
|
11月前
|
机器学习/深度学习 自然语言处理 算法
调研180多篇论文,这篇综述终于把大模型做算法设计理清了
《A Systematic Survey on Large Language Models for Algorithm Design》综述了过去三年大型语言模型(LLMs)在算法设计中的应用。LLMs通过自然语言处理技术,助力生成、优化和验证算法,在优化、机器学习、数学推理等领域展现出广泛应用前景。尽管存在资源需求高、结果不确定等挑战,LLMs仍为算法设计带来新机遇。论文地址:https://arxiv.org/abs/2410.14716。
360 14
|
11月前
|
机器学习/深度学习 人工智能 缓存
【AI系统】推理内存布局
本文介绍了CPU和GPU的基础内存知识,NCHWX内存排布格式,以及MNN推理引擎如何通过数据内存重新排布进行内核优化,特别是针对WinoGrad卷积计算的优化方法,通过NC4HW4数据格式重排,有效利用了SIMD指令集特性,减少了cache miss,提高了计算效率。
379 3
|
计算机视觉 Python
Flask学习笔记(六):基于Flask的摄像头-web显示代码(可直接使用)
这篇文章是关于如何使用Flask框架结合OpenCV库,通过电脑摄像头实现视频流在网页上的实时显示,并提供了单摄像头和多摄像头的实现方法。
422 2
Flask学习笔记(六):基于Flask的摄像头-web显示代码(可直接使用)
|
人工智能 机器人
多模态大模型活动 | 使用 PAI×LLaMA Factory 搭建文旅问答机器人
LLaMA Factory 是一款开源低代码大模型微调框架,集成了业界最广泛使用的微调技术,支持通过 Web UI 界面零代码微调大模型,目前已经成为开源社区内最受欢迎的微调框架,GitHub 星标超过3万。本次活动通过 PAI×LLaMA Factory 微调 Qwen2-VL 模型,快速搭建文旅领域知识问答机器人,期待看到您与 AI 导游的创意对话!
|
算法 Oracle Java
Java字符串拼接技术演进及阿里巴巴的贡献
本文主要讲述了Java字符串拼接技术的演进历程,以及阿里巴巴贡献的最新实现 PR 20273。
273 12
|
数据安全/隐私保护 C++ Python
Base32系列编码 代码实现过程
Base32系列编码 代码实现过程
322 0
|
安全 网络协议 网络安全
Python 渗透测试:黑客内外网信息收集.(帮助 得到信息攻击计算机内外网.)
Python 渗透测试:黑客内外网信息收集.(帮助 得到信息攻击计算机内外网.)
208 0
|
IDE Java Scala
IntelliJ IDEA 2023.3 最新变化2
IntelliJ IDEA 2023.3 最新变化
260 1
|
JSON 前端开发 API
软件开发者必看:5个卓越 Mock 工具推荐
在持续发展的前端开发领域,一套高效的自动化工具是关键。这篇文章将带你了解五个出色的模拟工具,它们能极大提升你的生产力、简化数据仿真,并提升接口测试效率。对于寻求提高工作流的前端开发者来说,它们是必不可少的。让我们开始探索这些工具,它们承诺将灵活性和智能带入你的开发过程!