博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj 1789 Truck History(kruskal算法)
阅读量:6507 次
发布时间:2019-06-24

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

主题链接:

思维:一个一个点,每两行之间不懂得字符个数就看做是权值。然后用kruskal算法计算出最小生成树

我写了两个代码一个是用优先队列写的。可是超时啦,不知道为什么。希望有人能够解答。后面用的数组sort排序然后才AC。

code:

数组sort排序AC代码:

#include
#include
#include
#include
using namespace std;struct edge{ int from; int to; int cost;};bool cmp(edge e1,edge e2){ return e1.cost

优先队列超时代码

#include
#include
#include
#include
using namespace std;struct edge{ friend bool operator<(edge e1,edge e2) { return e1.cost>e2.cost; } int from; int to; int cost;};edge e;priority_queue
Q;int father[2005];int nn,n;int find(int x){ if(x!=father[x]) { father[x]=find(father[x]); } return father[x];}void kruskal(){ int MST=0; for(int i=0;i<2005;i++) { father[i]=i; } int num=0; while(!Q.empty()&&num!=nn) { edge e=Q.top(); //printf("BBB%d %d %d\n",e.from,e.to,e.cost); Q.pop(); int fx=find(e.from); int fy=find(e.to); if(fx!=fy) { father[fx]=fy; MST+=e.cost; num++; } } printf("The highest possible quality is 1/%d.\n",MST);}int main(){ char str[2005][10]; int i,j; while(scanf("%d",&n)==1&&n) { nn=0; while(!Q.empty()) Q.pop(); for(i=0;i

版权声明:本文博客原创文章,博客,未经同意,不得转载。

你可能感兴趣的文章
学习C语言必须知道的理论知识(第一章)
查看>>
眠眠interview Question
查看>>
[转]CSS hack大全&详解
查看>>
RPC-client异步收发核心细节?
查看>>
#define WIN32_LEAN_AND_MEAN 的作用
查看>>
仿余额宝数字跳动效果 TextCounter
查看>>
你必须知道的.net学习总结
查看>>
Axure8.0 网页 or App 鼠标滚动效果
查看>>
大家好,新年快乐。
查看>>
Android学习路线
查看>>
Linux下的redis的持久化,主从同步及哨兵
查看>>
在相同的主机上创建一个duplicate数据库
查看>>
Date15
查看>>
从Date类型转为中文字符串
查看>>
基于multisim的fm调制解调_苹果开始自研蜂窝网调制解调器 最快2024年能用上?
查看>>
mupdf不支持x64_Window权限维持(七):安全支持提供者
查看>>
labview如何弹出提示窗口_LabVIEW开发者必读的问答汇总,搞定疑难杂症全靠它了!...
查看>>
hikariconfig mysql_HikariConfig配置解析
查看>>
mysql批量数据多次查询数据库_mysql数据库批量操作
查看>>
jquery 乱码 传参_jquery获取URL中参数解决中文乱码问题的两种方法
查看>>