第十七周:( Sicily1083) Networking(c++)
来源:互联网 发布:c语言abs 是什么函数 编辑:程序博客网 时间:2024/06/18 16:17
原题链接:
http://soj.sysu.edu.cn/1083
思路:最小生成树。Prim算法求解。
代码:
//顶点编号为1-NumPoints//数据输入和初始化应该根据具体情况而定//Edges[Node2][Node1]=Edges[Node1][Node2]#include <iostream>using namespace std;#define INF 2000000000int Edges[105][105];int Post[55];bool Visited[55];int NumPoints,NumRoads;int find_min_node(){ int res=1,min=Post[1]; for(int i=1;i<=NumPoints;i++) if(Post[i]<min){ min=Post[i]; res=i; } return res;}int Prim(){ int CostMinTree=0; Visited[1]=true; int add_node=1; for(int i=2;i<=NumPoints;i++){ for(int j=1;j<=NumPoints;j++) if((!Visited[j])&&(Edges[add_node][j]<Post[j])) Post[j]=Edges[add_node][j]; add_node=find_min_node(); CostMinTree+=Post[add_node]; Visited[add_node]=true; Post[add_node]=INF; } return CostMinTree;}int main(){ while(cin>>NumPoints){ if(NumPoints==0) break; cin>>NumRoads; for(int i=1;i<=NumPoints;i++){ Visited[i]=false; Post[i]=INF; for(int j=1;j<=NumPoints;j++) Edges[i][j]=INF; } for(int i=1;i<=NumRoads;i++){ int Node1,Node2,edge; cin>>Node1>>Node2>>edge; if(edge<Edges[Node1][Node2]){ Edges[Node1][Node2]=edge; Edges[Node2][Node1]=edge; } } cout<<Prim()<<endl; } return 0;}
阅读全文
1 0
- 第十七周:( Sicily1083) Networking(c++)
- Sicily1083. Networking
- C - Networking
- 第十七周—C语言 oj(1959 2016)
- 第十七周—C语言 oj(2004)
- 第十七周—C语言 oj(2006)
- 第十七周—C语言 oj 1002
- 第十七周—C语言 oj2017
- 第十七课、 C指针(概述)
- 第十七周(ZigZag Conversion)
- 编程练习(第十七周)
- 第十七周
- 第十七周
- 第十七周
- 第十七周
- redis源码分析(七)- 网络通讯协议(networking.c)
- Sicily1083(最小生成树)
- 第十七周 【OJ-问题 C: 奇偶各几何?】
- LaTeX中的希腊字母输入
- shift+e 栅格捕捉
- 学习C++的一些笔记(四)
- LeetCode题目:Palindrome Number
- 南阳理工2017第三届校赛总结!
- 第十七周:( Sicily1083) Networking(c++)
- Linux CAN说明文档
- kali2.0配置msf连接postgresql数据库
- python mysql and ORM 12
- JS学习笔记1
- allegro 封装shape焊盘问题 Unable to load shape symbol
- codeblocks窗体程序关闭dos窗口
- 类中成员函数的重载、覆盖与隐藏[转]
- ThinkPHP跨控制器调用方法