求最小生成树(Prim算法)

1000(ms)
10000(kb)
2251 / 4487
Tags: 生成树

求出给定无向带权图的最小生成树。图的定点为字符型,权值为不超过100

的整形。在提示中已经给出了部分代码,你只需要完善Prim算法即可。

#include< iostream> 
using namespace std;

typedef struct 

int n; 
int e; 
char data[500]; 
int edge[500][500]; 
}Graph;

typedef struct 

int index; 
int cost; 
}mincost;

typedef struct 

int x; 
int y; 
int weight;    
}EDGE;

typedef struct 

int index; 
int flag; 
}F;

void create(Graph &G,int n ,int e) 

int i,j,k,w; 
char a,b; 
for(i=0;i< n;i++) 
cin>>G.data[i]; 
for(i=0;i< n;i++) 
for(j=0;j< n;j++) 

if(i==j) 
G.edge[i][j]=0; 
else 
G.edge[i][j]=100; 
}

for(k=0;k< e;k++) 

cin>>a; 
cin>>b; 
cin>>w; 
for(i=0;i< n;i++) 
if(G.data[i]==a) break; 
for(j=0;j< n;j++) 
if(G.data[j]==b) break;

G.edge[i][j]=w; 
G.edge[j][i]=w; 

G.n=n; 
G.e=e; 
}

void Prim(Graph &G,int k) 
{

//完成Prim算法

}

int main() 

Graph my; 
int n,e; 
cin>>n>>e; 
create(my,n,e); 
Prim(my,0);    
return 0; 
}

输入

第一行为图的顶点个数n第二行为图的边的条数e接着e行为依附于

一条边的两个顶点和边上的权值

输出

最小生成树中的边。

样例输入

6
10
ABCDEF
A B 6
A C 1
A D 5
B C 5
C D 5
B E 3
E C 6
C F 4
F D 2
E F 6

样例输出

 (A,C)(C,F)(F,D)(C,B)(B,E)
 #include<iostream>
#include<cstring>
using namespace std;
typedef struct
{
int n; //点的个数
int e; //边的条数
char data[]; //接收点的字符串
int edge[][]; //图的邻接矩阵
} Graph;
typedef struct
{
int index;
int cost;
} mincost;
void create(Graph &G,int n,int e) //建立图
{
int i,j,k,w;
char a,b;
for(i=; i< n; i++)
cin>>G.data[i];
for(i=; i< n; i++) //给图的邻接矩阵赋初值
for(j=; j< n; j++)
{
if(i==j)
G.edge[i][j]=;
else
G.edge[i][j]=;
}
for(k=; k< e; k++)
{
cin>>a;
cin>>b;
cin>>w;
for(i=; i< n; i++) //填充邻接矩阵
if(G.data[i]==a)
break;
for(j=; j< n; j++)
if(G.data[j]==b)
break;
G.edge[i][j]=w;
G.edge[j][i]=w;
}
G.n=n;
G.e=e;
}
void Prim(Graph &G,int v)
{
int lowcost[];
memset(lowcost,,sizeof(lowcost));
int MIN;
int closest[],i,j,k;
for(i=; i<G.n; i++) //根据初始点来记录该点能到的点连的边的权
{
lowcost[i]=G.edge[v][i];
closest[i]=v;
}
for(i=; i<G.n; i++)
{
MIN=;
for(j=; j<G.n; j++)
if(lowcost[j]!=&&lowcost[j]<MIN) //找最小的边
{
MIN=lowcost[j];
k=j;
}
cout<<"("<<G.data[closest[k]]<<","<<G.data[k]<<")";
lowcost[k]=;
for(j=; j<G.n; j++)
if(lowcost[j]&&G.edge[k][j]<lowcost[j]) //以k为初点来初始化
{
lowcost[j]=G.edge[k][j];
closest[j]=k;
}
}
}
int main()
{
Graph my;
int n,e;
cin>>n>>e;
create(my,n,e);
Prim(my,);
return ;
}

swust oj 1075的更多相关文章

  1. SWUST OJ 1075 求最小生成树(Prim算法)

    求最小生成树(Prim算法) 我对提示代码做了简要分析,提示代码大致写了以下几个内容 给了几个基础的工具,邻接表记录图的一个的结构体,记录Prim算法中最近的边的结构体,记录目标边的结构体(始末点,值 ...

  2. [Swust OJ 404]--最小代价树(动态规划)

    题目链接:http://acm.swust.edu.cn/problem/code/745255/ Time limit(ms): 1000 Memory limit(kb): 65535   Des ...

  3. [Swust OJ 649]--NBA Finals(dp,后台略(hen)坑)

    题目链接:http://acm.swust.edu.cn/problem/649/ Time limit(ms): 1000 Memory limit(kb): 65535 Consider two ...

  4. SWUST OJ NBA Finals(0649)

    NBA Finals(0649) Time limit(ms): 1000 Memory limit(kb): 65535 Submission: 404 Accepted: 128   Descri ...

  5. [Swust OJ 1023]--Escape(带点其他状态的BFS)

    解题思路:http://acm.swust.edu.cn/problem/1023/ Time limit(ms): 5000 Memory limit(kb): 65535     Descript ...

  6. [Swust OJ 1125]--又见GCD(数论,素数表存贮因子)

    题目链接:http://acm.swust.edu.cn/problem/1125/ Time limit(ms): 1000 Memory limit(kb): 65535   Descriptio ...

  7. [Swust OJ 1126]--神奇的矩阵(BFS,预处理,打表)

    题目链接:http://acm.swust.edu.cn/problem/1126/ Time limit(ms): 1000 Memory limit(kb): 65535 上一周里,患有XX症的哈 ...

  8. [Swust OJ 1026]--Egg pain's hzf

      题目链接:http://acm.swust.edu.cn/problem/1026/     Time limit(ms): 3000 Memory limit(kb): 65535   hzf ...

  9. [Swust OJ 1139]--Coin-row problem

    题目链接:  http://acm.swust.edu.cn/contest/0226/problem/1139/ There is a row of n coins whose values are ...

随机推荐

  1. vue 父子组件的方法调用

    $emit 子组件触发父组件的方法: <!-- 子组件 --> <template> <div id="child"> <button @ ...

  2. CAS集成oauth2协议的支持

    参考https://blog.csdn.net/qq_34021712/article/details/82290876, 在springboot体系类,可以采用spring security oau ...

  3. 使用日志服务进行Kubernetes日志采集

    阿里云容器服务Kubernetes集群集成了日志服务(SLS),您可在创建集群时启用日志服务,快速采集Kubernetes 集群的容器日志,包括容器的标准输出以及容器内的文本文件. 新建 Kubern ...

  4. Emacs 不将M-Del删除的单词加入粘贴板

    原文:https://jblevins.org/log/clipboard I use a clipboard manager called Copied that syncs previously ...

  5. 生成建表脚本up_CreateTable

    已经很久没用使用这个脚本了,今天用到,并做修改,增加了生成扩展属性功能. Go if object_ID('[up_CreateTable]') is not null Drop Procedure ...

  6. Vue Resource root options not used?

    I specify a root options in my Vue-Resource in my main.js file, but when I do the request, it does n ...

  7. 导出表结构到Excel 生成代码用

    导出表结构到Excel ,统一维护,生成代码用 SELECT C.TABLE_NAME,CC.COMMENTS,C.COLUMN_NAME,C.DATA_TYPE, CASE WHEN C.DATA_ ...

  8. 快速入门 WePY 小程序【转】

    一.WePY介绍 WePY 是 腾讯 参考了Vue 等框架对原生小程序进行再次封装的框架,更贴近于 MVVM 架构模式, 并支持ES6/7的一些新特性. 二.WePY 使用 1.WePY的安装或更新都 ...

  9. 转载记录一个有效的jetbrains激活码

    来自:https://blog.csdn.net/ahun535915415/article/details/80687762 K03CHKJCFT-eyJsaWNlbnNlSWQiOiJLMDNDS ...

  10. 【静默】在RHEL 6.5上静默安装Oracle 18c

    [静默]在RHEL 6.5上静默安装Oracle 18c Oracle 18c.18c其实就是12.2.0.2,19c就是12.2.0.3.db_home.zip 安装包大概4.25G,解压后有8.9 ...