博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj 1251续
阅读量:4926 次
发布时间:2019-06-11

本文共 2886 字,大约阅读时间需要 9 分钟。

/*#include
using namespace std;int data[100][100];int d[100];//存放当前的s到各点最小距离;int v[100];//标记是否用过;int sum;const int maxint=99999;void shuru(int n){ int a,b,c; for(int i=1;i<=100;i++)//初始化data[][]; for(int j=1;j<=100;j++) data[i][j]=maxint; for(int i=1;i<=n;i++)//初始化d[];使得其值为maxint; d[i]=maxint; while(cin>>a>>b>>c) { data[a][b]=c;//无相边; data[b][a]=c; }}void prim(int n){ d[1]=0;sum=0; memset(v,0,sizeof(v)); for(int i=1;i<=n;i++) { int min=maxint; int k=0; for(int j=1;j<=n;j++) { if(!v[j]&&d[j]<=min) { min=d[j]; k=j; } } sum=sum+min; v[k]=1;//标记已存的顶点标号; for(int g=1;g<=n;g++) //更新d[];由于s的集合多了一个k顶点,下一步比较未标记的顶点 到s的最小距离d【】时,只需要原来的d[j]和data[k][j]比较; if(!v[g]&&d[g]>data[k][g]) d[g]=data[k][g]; } cout<<"一共需要的最小权值为: "<
<
>n>>m; shuru(n); for(int j=1;j<=n;j++) {for(int i=1;i<=n;i++) cout<
<<" "; cout<
using namespace std;int data[101][101];int d[101];//存放当前的最小距离;int v[101];//标记是否用过;int sum;const int maxint=99999;void shuru(int n){ int a,b,c; char as,nn; memset(data,0,sizeof(data)); memset(d,0,sizeof(d)); for(int i=1;i<=100;i++)//初始化data[][]; for(int j=1;j<=100;j++) data[i][j]=maxint; for(int i=1;i<=n;i++)//初始化d[];使得其值为maxint; d[i]=maxint; for(int i=1;i
>as>>a; while(a--) {cin>>nn>>b;data[as-'A'+1][nn-'A'+1]=b; data[nn-'A'+1][as-'A'+1]=b;} }}void prim(int n){ d[1]=0;sum=0; memset(v,0,sizeof(v)); for(int i=1;i<=n;i++) { int min=maxint; int k=1; for(int j=1;j<=n;j++) { if(!v[j]&&d[j]<=min) { min=d[j]; k=j; } } sum=sum+min; v[k]=1; for(int g=1;g<=n;g++) if(!v[g]&&d[g]>data[k][g]) d[g]=data[k][g]; } cout<
<
>n&&n) { shuru(n); prim(n); } return 0;}*/#include
using namespace std;int d[100];//用来记录边的一顶点;int u[100];//另一顶点;int w[100];//权值;int p[100];//并查集是使用;int g[100];//给边编号;int sum;//统计权值最小和;int shuru(int n)//m表示一共的边数;{ int a,b,dd=1; char as,nn; for(int i=1;i
>as>>a; while(a--) {cin>>nn>>b; u[dd]=nn-'A'+1; w[dd]=b; d[dd]=as-'A'+1; dd++;} } return --dd;}int cmp(const void * a,const void * b){ return w[*(int *)a]-w[*(int *)b];//排序比较,权值从小到大}int find(int x){ return x==p[x]?x:p[x]=find(p[x]);}void kruskal(int n,int m){ sum=0; memset(p,0,sizeof(p)); memset(g,0,sizeof(g)); for(int i=1;i<=n;i++)//初始化并查集,每个顶点都是一个集合; p[i]=i; for(int i=1;i<=m;i++)//给边编号; g[i]=i; qsort(g,m+1,sizeof(g[1]),cmp);/* for(int i=1;i<=m;i++) cout<
<<" "; cout<
>n&&n) { memset(d,0,sizeof(d)); memset(u,0,sizeof(u)); memset(w,0,sizeof(w)); m=shuru(n); kruskal(n,m); } return 0;}

 

转载于:https://www.cnblogs.com/wuming127/archive/2012/08/26/2657131.html

你可能感兴趣的文章
网页或微信小程序中使元素占满整个屏幕高度
查看>>
C#枚举数值与名称的转换实例分享
查看>>
C++ push方法与push_back方法
查看>>
Spring4笔记8--Spring与JDBC模板(IoC应用的例子)
查看>>
B. Batch Sort
查看>>
构建应用层服务
查看>>
《沉静领导》读书笔记zz
查看>>
沉浸式
查看>>
CentOS6.5下Ambari安装搭建部署大数据集群(图文分五大步详解)(博主强烈推荐)...
查看>>
weekend110(Hadoop)的 第三天笔记
查看>>
io流和序列化
查看>>
观察者模式
查看>>
【Window Power Shell】介绍与使用
查看>>
数据库 外连接于内连接
查看>>
NHibernate系列文章二十一:延迟加载
查看>>
shell 编程(1)
查看>>
asp.net 项目在 IE 11 下出现 “__doPostBack”未定义 的解决办法
查看>>
ef core 2.0 执行update-database命令时提示__EFMigrationsHistory doesn’t exist
查看>>
在项目中使用log4net记录日志
查看>>
计算几何----线段交
查看>>