HDU 1863 畅通工程
时间:2022-05-08
本文章向大家介绍HDU 1863 畅通工程,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
一道很朴素的最小生成树,不过通过此题知道了,当n已经决定的情况下,若n个点无法构成最小生成树的话,最终得到ans无法得到精确的值,他会将无穷大的路径加入。
#include<stdio.h>
#include<string.h>
const int MAXN=110;
const int INF=9999999;
int mat[MAXN][MAXN];
int vis[MAXN];
int flag;
int Prim(int n)
{
int lowcost[MAXN];
int mst[MAXN];
int i,j,min,minid,sum=0;
for (i=1;i<=n;i++)
{
lowcost[i]=INF;
vis[i]=0;
mst[i]=1;
}
lowcost[1]=0;
for (i=1;i<=n;i++)
{
min=INF;
for (j=1;j<=n;j++)
{
if(lowcost[j]<min && !vis[j])
{
min=lowcost[j];
minid=j;
}
}
if(min==INF) flag=1;
sum+=min;
vis[minid]=1;
for (j=1;j<=n;j++)
{
if(mat[minid][j]<lowcost[j])
{
lowcost[j]=mat[minid][j];
mst[j]=minid;
}
}
}
return sum;
}
int main()
{
int n,m,i,j,a,b,c;
int cas;
while(scanf("%d%d",&m,&n) && m)
{
flag=0;
cas=0;
memset(vis,0,sizeof(vis));
for(i=0;i<=n;i++)
for (j=0;j<=n;j++)
mat[i][j]=INF;
for (i=0;i<m;i++)
{
scanf("%d%d%d",&a,&b,&c);
if(c<mat[a][b]) mat[a][b]=mat[b][a]=c;
}
// printf("%dn",cas);
int ans=Prim(n);
if(flag) printf("?n");
else printf("%dn",ans);
}
return 0;
}
- oAuth 2.0 笔记
- common-pool2 学习:thrift连接池的另一种实现
- IntelliJ IDEA 17和Maven构建javaWeb项目
- spring-boot 速成(2) devtools之热部署及LiveReload
- spring-boot 速成(2) devtools之热部署及LiveReload
- 使用git提交项目
- JavaScript中的内置对象--Number对象
- 自动驾驶落地,究竟被什么绑住了脚?
- JDBC(三)数据库连接池(DBCP、C3P0)
- Single Page Application概览
- HashSet集合中hashCode及equals方法详解
- 企鹅智造企业发展论坛:共话小程序生态下的企业营销
- MySQL(十六)之MySQL用户管理
- JavaScript中this关键字使用
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android实现单页面浮层可拖动view的示例代码
- 漫画:最长公共子序列
- RecyclerView的简单使用
- Android Parcelable接口使用方法详解
- 假期结束了,撸一篇技术和大伙分享下吧!
- Android AIDL实现跨进程通信的示例代码
- Android中SharedPreferences简单使用实例
- 功能强大的Android滚动控件RecyclerView
- Android使用 Retrofit 2.X 上传多文件和多表单示例
- Android状态栏白底黑字的示例代码
- Android使用ViewPager实现顶部tabbar切换界面
- Android 中ScrollView与ListView冲突问题的解决办法
- Android数据库操作工具类分享
- Android使用RadioGroup实现底部导航栏
- Android 中Fragment与Activity通讯的详解