原题链接

Prim(点归并)

//异或运算:相同为假,不同为真
#include<cstdio>
#include<algorithm>
#define maxn 105
using namespace std;
int n,m,sum,flag;
int fa[maxn];
struct Edge
{
int u,v,w;
bool operator<(const Edge &cmp)const{
return w<cmp.w;
}
}edge[maxn*maxn>>]; int Findset(int x)
{
if(fa[x]==x) return fa[x]=x;
else return fa[x]=Findset(fa[x]);
}
int main()
{
while(scanf("%d",&n),n){
m=(n-)*n/;
for(int i=;i<=n;i++)
fa[i]=i;
for(int i=;i<m;i++){
scanf("%d%d%d%d",&edge[i].u,&edge[i].v,&edge[i].w,&flag);
if(flag)
fa[edge[i].u]=edge[i].v;
}
sort(edge,edge+m);
sum=;
for(int i=;i<m;i++){
int x=Findset(edge[i].u);
int y=Findset(edge[i].v);
if(x!=y){
fa[x]=y;
sum+=edge[i].w;
}
}
printf("%d\n",sum);
}
}

参考链接

Kruscal(边归并)

#include<cstdio>
#include<cstring>
#define INF 0x3f3f3f3f
#define maxn 105
int i,j,k,n,m,min,sum;
int lowcost[maxn],visit[maxn];
int graph[maxn][maxn];
void Prim()
{
sum=;
memset(visit,,sizeof(visit));
visit[]=;
for(i=;i<=n;i++)
lowcost[i]=graph[][i];
for(i=;i<=n;i++){
min=INF;
for(j=;j<=n;j++){
if(!visit[j]&&min>lowcost[j]){
min=lowcost[j];
k=j;
}
}
sum+=lowcost[k];
visit[k]=;
for(j=;j<=n;j++){
if(!visit[j]&&lowcost[j]>graph[k][j])
lowcost[j]=graph[k][j];
}
}
} int main()
{
int a,b,c,d;
while(scanf("%d",&n),n){
m=(n-)*n/;
memset(graph,INF,sizeof(graph));
while(m--){
scanf("%d%d%d%d",&a,&b,&c,&d);
if(d) graph[a][b]=graph[b][a]=;
else graph[a][b]=graph[b][a]=c;
}
Prim();
printf("%d\n",sum);
}
return ;
}

HDU 1879 继续畅通工程(Prim||Kruscal模板题)的更多相关文章

  1. HDU 1879 继续畅通工程 (Prim(普里姆算法)+Kruskal(克鲁斯卡尔))

    继续畅通工程 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  2. hdu 1879 继续畅通工程

    /************************************************************************/ /* hdu 1879 继续畅通工程 Time L ...

  3. hdu 1879 继续畅通工程 (并查集+最小生成树)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1879 继续畅通工程 Time Limit: 2000/1000 MS (Java/Others)    ...

  4. hdu 1233 还是畅通工程 (prim, kruskal)

    还是畅通工程Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submi ...

  5. HDU 1874 畅通工程续(模板题——Floyd算法)

    题目: 某省自从实行了很多年的畅通工程计划后,终于修建了很多路.不过路多了也不好,每次要从一个城镇到另一个城镇时,都有许多种道路方案可以选择,而某些方案要比另一些方案行走的距离要短很多.这让行人很困扰 ...

  6. HDU 1879 继续畅通工程(最小生成树)

    省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可).现得到城镇道路统计表,表中列出了任意两城镇间修建道路的费用,以及该道路是否已经 ...

  7. hdu 1879 继续畅通工程 (最小生成树)

    继续畅通工程 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Subm ...

  8. HDU 1879 继续畅通工程(Kruskra)

    继续畅通工程 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  9. (step6.1.1)hdu 1879(继续畅通工程——最小生成树、kruscal)

    题目大意:输入一个整数n,表示有n个村庄.在接下来的n(n-1)/2行中,每行有4个整数begin  end  weight  flag.分别表示从begin到end之间可以连通 ,他们之间的费用为w ...

随机推荐

  1. 九度 1534:数组中第K小的数字(二分法变形)

    题目描述: 给定两个整型数组A和B.我们将A和B中的元素两两相加可以得到数组C.譬如A为[1,2],B为[3,4].那么由A和B中的元素两两相加得到的数组C为[4,5,5,6].现在给你数组A和B,求 ...

  2. .Net WebAPI文档自动化

    1.在VS2015中右键选择工程: 2.点击NuGet程序包: 3.输入Swagger在线搜索: 4.安装:Swagger.Net.UI和Swashbuckle包: 5.打开SwaggerNet.cs ...

  3. 【RF库Collections测试】Get Index From List

    Name:Get Index From ListSource:Collections <test library>Arguments:[ list_ | value | start=0 | ...

  4. /etc/sysctl.conf

    /etc/sysctl.conf 用于控制内核相关的配置参数,而且它的内容全部是对应于 /proc/sys/ 这个目录的子目录及文件 [root@localhost ~]$ ll /proc/sys ...

  5. php学习八:封装

    一:在php中,用class关键字来创建一个类,即进行封装:在类里面有成员属性和方法行为组成: 1.成员属性:用关键字var来声明,可以给初始值也可以不给;现在var废弃,用public来声明,pub ...

  6. PyQt4状态栏

    主窗口 QMainWindow类用来创建应用程序的主窗口.通过该类,我们可以创建一个包含状态栏.工具栏和菜单栏的经典应用程序框架. 状态栏是用来显示状态信息的串口部件. #!/usr/bin/pyth ...

  7. Anfroid 在界面中显示图片 ImageView

    ImageView1.什么是ImageView是显示图片的一个控件2.ImageView属性android:src ImageView的内容颜色 android:background ImageVie ...

  8. JDBC处理文本和二进制文件

    JDBC支持文本(CLOB)和二进制(BLOB)文件的处理,比如要往数据库里存取文章或者图片.这都是用流的思想来解决的. 来两个Demo看看JDBC是怎么操作文本和二进制文件的. CLOB: pack ...

  9. Android Processes and Threads

    Processes and Threads When an application component starts and the application does not have any oth ...

  10. 拦截chrome的console.log输出

    console.log = function(){}; 这样 console.log(123) 将不会在输出任何调试信息