最小生成树 Prim和Kruskal
2024-09-08 05:24:14
感觉挺简单的,Prim和Dijkstra差不多,Kruskal搞个并查集就行了,直接上代码吧,核心思路都是找最小的边.
Prim
int n,m;
int g[N][N];
int u,v;
int dis[N];
bool st[N]; int prim(){
me(dis,INF,sizeof(dis)); int res=0;
for(int i=0;i<n;++i){
int t=-1;
for(int j=1;j<=n;++j){
if(!st[j] && (t==-1 || dis[t]>dis[j])) t=j;
}
if(i && dis[t]==INF) return INF;
if(i) res+=dis[t]; for(int j=1;j<=n;++j){
dis[j]=min(dis[j],g[t][j]);
} st[t]=true;
}
return res;
} int main() {
scanf("%d %d",&n,&m); me(g,INF,sizeof(g)); for(int i=1;i<=m;++i){
int a,b,c;
scanf("%d %d %d",&a,&b,&c);
g[a][b]=g[b][a]=min(g[a][b],c);
} int t=prim(); if(t==INF) puts("impossible");
else printf("%d\n",t); return 0;
}
Kruskal
struct misaka{
int a,b;
int val;
}e[N]; int n,m;
int p[N]; bool cmp(misaka n,misaka m){
return n.val<m.val;
} int find(int x){
if(p[x]!=x) p[x]=find(p[x]); return p[x];
} int main() {
scanf("%d %d",&n,&m); for(int i=0;i<m;++i){
int a,b,val;
scanf("%d %d %d",&a,&b,&val);
e[i]={a,b,val};
} sort(e,e+m,cmp); for(int i=1;i<=n;++i) p[i]=i; int res=0;
int cnt=0; for(int i=0;i<m;++i){
int a=e[i].a;
int b=e[i].b;
int val=e[i].val; a=find(a);
b=find(b); if(a!=b){
p[a]=b;
res+=val;
cnt++;
}
} if(cnt<n-1) puts("impossible");
else printf("%d\n",res); return 0;
}
最新文章
- sql server中常用方法函数
- MIL 多示例学习 特征选择
- 【转】Python3.x和Python2.x的区别
- Oracle创建用户、表空间并设置权限
- grok
- Bootstrap学习的点点滴滴
- Random Integer Generator
- webkit的基本应用
- php.ini 全站,和htaccess web目录 默认头部和尾部 auto_prepend_file
- IE8 多进程问题
- C++——虚函数问题小集
- 在React Native中,使用fetch网络请求 实现get 和 post
- 笔记本装双系统!win10+Linux!所有的坑自己一个个爬过来,纪念一下。
- python使用requests库爬取网页的小实例:爬取京东网页
- Android查看appPackage和Activity的多种方法
- 洛谷 P3521 ROT-Tree Rotations [POI2011] 线段树
- Java中的几种对象(POJO,PO,DTO,DAO,BO)
- IM系统架构设计之浅见
- Python——eventlet.hubs
- WCF服务部署
热门文章
- python模块详解 | shutil
- 【Linux】使用cryptsetup加密磁盘 策略为LUKS
- SparkStreaming和Kafka基于Direct Approach如何管理offset实现exactly once
- kettle 连接oracle12c问题解决办法:
- Paginator Django 分页 When QuerySets are evaluated QuerySets 执行原理 QuerySets are lazy 惰性执行 访问db取数据的时机
- Redis主从、哨兵模式的搭建
- loj10005数列极差
- LOJ10196越狱
- Spring MVC—数据绑定机制,数据转换,数据格式化配置,数据校验
- scala 时间,时间格式转换