您的位置:首页 > 其它

poj 1861 network

2012-12-10 19:18 369 查看
最小生成树 ,并查集

用的是kruskal算法,第一次用 ,其实挺简单的

qwertyxk1861Accepted420K94MSC++1267B
#include<stdio.h>
#include<stdlib.h>
#include<algorithm>
using namespace std;
#define MAX 15000
typedef struct
{
int first;
int second;
int cablelen;
bool choosed;
}connect;
connect connections[MAX+10];
int hubs[1010];

bool compare(connect a,connect b)
{
return a.cablelen<b.cablelen;
}
int find(int i)
{
for(;hubs[i]>=0;i=hubs[i])
{;}
return i;
}
void simpleUnion(int i,int j)
{
hubs[i]=j;
}
int main()
{
int N,M,i,count=0,count1=0,maxnum=0;
scanf("%d%d",&N,&M);
for(i=1;i<=N;i++)
hubs[i]=-1;
for(i=0;i<M;i++)
{
scanf("%d%d%d",&connections[i].first,&connections[i].second,&connections[i].cablelen);
connections[i].choosed=false;
}
sort(connections,connections+M,compare);    \\路径从小到大排序

while(count!=N-1)
{
while(count1<=M-1)
{
int a=find(connections[count1].first);
int b=find(connections[count1].second);
count1++;
if(a!=b)
{
simpleUnion(a,b);
count++;
connections[count1-1].choosed=true;
if(connections[count1-1].cablelen>maxnum)
maxnum=connections[count1-1].cablelen;
break;
}
}
}
printf("%d\n",maxnum);
printf("%d\n",N-1 );
for(i=0;i<M;i++)
if(connections[i].choosed)
printf("%d %d\n",connections[i].first,connections[i].second);

system("pause");
return 0;
}


在这里提一个很性感、犀利的编辑器 sublime text2

写代码非常方便,在这里存一下一些快捷操作

Ctrl+L

选择整行(按住-继续选择下行)
Ctrl+KK
从光标处删除至行尾
Ctrl+Shift+K
删除整行
Ctrl+Shift+D
复制光标所在整行,插入在该行之前
Ctrl+J
合并行(已选择需要合并的多行时)
Ctrl+KU
改为大写
Ctrl+KL
改为小写
Ctrl+D
选词(按住-继续选择下个相同的字符串)
Ctrl+M
光标移动至括号内开始或结束的位置
Ctrl+Shift+M
选择括号内的内容(按住-继续选择父括号)
Ctrl+/
注释整行(如已选择内容,同“Ctrl+Shift+/”效果)
Ctrl+Shift+/
注释已选择内容
Ctrl+Space
自动完成(win与系统快捷键冲突,需修改)
Ctrl+Z
撤销
Ctrl+Y
恢复撤销
Ctrl+Shift+V
粘贴并自动缩进(其它兄弟写的,实测win系统自动缩进无效)
Ctrl+M
光标跳至对应的括号
Alt+.
闭合当前标签
Ctrl+Shift+A
选择光标位置父标签对儿
Ctrl+Shift+[
折叠代码
Ctrl+Shift+]
展开代码
Ctrl+KT
折叠属性
Ctrl+K0
展开所有
Ctrl+U
软撤销
Ctrl+T
词互换
Ctrl+Enter
插入行后
Ctrl+Shift Enter
插入行前
Ctrl+K Backspace
从光标处删除至行首
Ctrl+Shift+UP
与上行互换
Ctrl+Shift+DOWN
与下行互换
Shift+Tab
去除缩进
Tab
缩进
F9
行排序(按a-z)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: