POJ 1258 Agri-Net(最小生成树,模板题)
用的是prim算法。
我用vector数组,每次求最小的dis时,不需要遍历所有的点,只需要遍历之前加入到vector数组中的点(即dis[v]!=INF的点)。
但其实时间也差不多,和遍历所有的点的方法都是16ms。。。
- #include <iostream>
- #include <algorithm>
- #include <string.h>
- #include <stdio.h>
- #include <string>
- #include <queue>
- using namespace std;
- const int INF=0x3f3f3f3f;
- int n,cost;
- int ans;
- int w[][];
- int dis[]; //生成树外的点与生成树相连的最短边长
- int pre[]; //pre[v]为v的前驱节点,用来输出进入最小生成树的边。该题用不到
- int vis[]; //标记点是否在生成树中
- vector<int> son[];
- void init() {
- memset(pre,,sizeof(pre));
- memset(dis,INF,sizeof(dis));
- memset(vis,,sizeof(vis));
- }
- int solve() {
- vector<int> node;
- int s=,counts=,ans=,tmp,k;
- dis[s]=;
- pre[s]=s;
- node.push_back(s);
- while() {
- tmp=INF;
- for(int i=; i<node.size(); i++) {
- int v=node[i];
- if(!vis[v]&& dis[v]<tmp) {
- tmp=dis[v];
- k=v; //k即为在没有进入最小生成树的点中到树的距离(dis[k])最小的点。
- }
- }
- /*
- //直接遍历所有的点
- for(int i=1;i<=n;i++){
- if(!vis[i]){
- if(dis[i]<tmp){
- tmp=dis[i];
- k=i;
- }
- }
- }
- */
- if(tmp==INF)
- break;
- ans+=tmp;
- vis[k]=;
- for(int i=; i<son[k].size(); i++) {
- int v=son[k][i];
- if(!vis[v] && w[k][v]<dis[v]) {
- dis[v]=w[k][v];
- pre[v]=k;
- node.push_back(v);
- }
- }
- }
- return ans;
- }
- int main() {
- while(scanf("%d",&n)!=EOF) {
- for(int i=; i<; i++) {
- son[i].clear();
- }
- for(int i=; i<=n; i++) {
- for(int j=; j<=i; j++)
- scanf("%d",&cost);
- for(int j=i+; j<=n; j++) {
- scanf("%d",&cost);
- w[i][j]=w[j][i]=cost;
- son[i].push_back(j);
- son[j].push_back(i);
- }
- }
- ans=;
- init();
- ans=solve();
- printf("%d\n",ans);
- }
- return ;
- }
POJ 1258 Agri-Net(最小生成树,模板题)的更多相关文章
- poj 1251 poj 1258 hdu 1863 poj 1287 poj 2421 hdu 1233 最小生成树模板题
poj 1251 && hdu 1301 Sample Input 9 //n 结点数A 2 B 12 I 25B 3 C 10 H 40 I 8C 2 D 18 G 55D 1 E ...
- POJ 1258:Agri-Net Prim最小生成树模板题
Agri-Net Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 45050 Accepted: 18479 Descri ...
- POJ 1287 Networking【kruskal模板题】
传送门:http://poj.org/problem?id=1287 题意:给出n个点 m条边 ,求最小生成树的权 思路:最小生树的模板题,直接跑一遍kruskal即可 代码: #include< ...
- POJ 1502 MPI Maelstrom(模板题——Floyd算法)
题目: BIT has recently taken delivery of their new supercomputer, a 32 processor Apollo Odyssey distri ...
- POJ 1470 Closest Common Ancestors (模板题)(Tarjan离线)【LCA】
<题目链接> 题目大意:给你一棵树,然后进行q次询问,然后要你统计这q次询问中指定的两个节点最近公共祖先出现的次数. 解题分析:LCA模板题,下面用的是离线Tarjan来解决.并且为了代码 ...
- POJ 3264 Balanced Lineup(模板题)【RMQ】
<题目链接> 题目大意: 给定一段序列,进行q次询问,输出每次询问区间的最大值与最小值之差. 解题分析: RMQ模板题,用ST表求解,ST表用了倍增的原理. #include <cs ...
- POJ 1330 Nearest Common Ancestors (模板题)【LCA】
<题目链接> 题目大意: 给出一棵树,问任意两个点的最近公共祖先的编号. 解题分析:LCA模板题,下面用的是树上倍增求解. #include <iostream> #inclu ...
- POJ:Dungeon Master(三维bfs模板题)
Dungeon Master Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 16748 Accepted: 6522 D ...
- O - 听说下面都是裸题 (最小生成树模板题)
Economic times these days are tough, even in Byteland. To reduce the operating costs, the government ...
- POJ 3068 运送危险化学品 最小费用流 模板题
"Shortest" pair of paths Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 1215 ...
随机推荐
- 小米pad MI PAD 开发者选项、USB调试开启方式
设置->关于平板->在MIUI版本一行连续点击7次. 之后就出现了开发者选项.可以开启USB调试等. 你能想到吗……??
- void指针
指针有两个属性:指向变量/对象的地址 和长度 但是指针只存储地址,长度则取决于指针的类型 编译器根据指针的类型从指针指向的地址向后寻址 指针类型不同则寻址范围也不同,比如: int*从指定地址向后寻找 ...
- 简单解析依赖注入(控制反转)在Spring中的应用
IoC——Inversion of Control 控制反转DI——Dependency Injection 依赖注入 大家都知道,依赖注入是Spring中非常重要的一种设计模式.可能很多初学者 ...
- JS判断客户端是手机还是PC
function IsPC() { var userAgentInfo = navigator.userAgent; var Agents = ["Android", " ...
- [大牛翻译系列]Hadoop(11)MapReduce 性能调优:诊断一般性能瓶颈
6.2.4 任务一般性能问题 这部分将介绍那些对map和reduce任务都有影响的性能问题. 技术37 作业竞争和调度器限制 即便map任务和reduce任务都进行了调优,但整个作业仍然会因为环境原因 ...
- python: 生成guid
其实经常需要生成一个guid,在各种场合使用...也简单写个小脚本实现吧. 实现下来发现速度比较慢... import uuid import sys def show_ver(): print 'g ...
- Microsoft server software support for Microsoft Azure virtual machines
http://support.microsoft.com/kb/2721672/en-us Article ID: 2721672 - Last Review: November 22, 2014 ...
- postgreSQL数据库(索引、视图)
索引的含义与特点 索引是一个单独的.存储在磁盘上的数据库结构,它们包含对数据所有记录的引用指针,postgresql列类型都可以被索引,对相关列索引是提高查询操作效率的最佳途径.例如,查询select ...
- Hadoop2安装
http://wenku.baidu.com/view/fe1b2f22de80d4d8d15a4f6e.html http://wenku.baidu.com/view/e4607031581b6b ...
- 【F#】核心数据多线程处理的首选
http://www.cnblogs.com/zilin-xiao/archive/2011/08/26/2155124.html