#include <iostream>

#include <queue>

using namespace std;

typedef struct 

{

    long v;

    long next;

    long cost;

}Edge;

typedef struct 

{

    long v;

    long cost;

}node;

bool operator <(const node &a,const node &b)

{

    return a.cost>b.cost;

}

priority_queue<node> q;

const long MAXN=10000;

Edge e[MAXN];

long p[MAXN];

bool vist[MAXN];

long m,n;

long from,to,cost;

void init()

{

    memset(p,-1,sizeof(p));

    memset(vist,0,sizeof(vist));

    while (!q.empty())

    {

        q.pop();

    }

    long i;

    long eid=0;

    for (i=0;i<n;++i)

    {

        scanf("%ld %ld %ld",&from,&to,&cost);

        e[eid].next=p[from];

        e[eid].v=to;

        e[eid].cost=cost;

        p[from]=eid++;

        //以下适用于无向图

        swap(from,to);

        e[eid].next=p[from];

        e[eid].v=to;

        e[eid].cost=cost;

        p[from]=eid++;

    }

}

void print(long cost)

{

    printf("%ld\n",cost);

}

void Prime()

{

    long cost=0;

    init();

    node t;

    t.v=from;//选择起点

    t.cost=0;

    q.push(t);

    long tt=0; 

    while (!q.empty()&&tt<m)

    {

        t=q.top();

        q.pop();

        if (vist[t.v])

        {

            continue;

        }

        cost+=t.cost;

        ++tt;

        vist[t.v]=true;

        long j;

        for (j=p[t.v];j!=-1;j=e[j].next)

        {

            if (!vist[e[j].v])

            {

                node temp;

                temp.v=e[j].v;

                temp.cost=e[j].cost;

                q.push(temp);

            }

        }

    }

    print(cost);

}

int main()

{

    while (scanf("%ld %ld",&m,&n)!=EOF)

    {

        Prime();

    }

    return 0;

}

prime算法邻接表写法的更多相关文章

  1. poj1273--Drainage Ditches(最大流Edmond-Karp算法 邻接表实现)

    最大流模板题 大部分Edmond-Karp算法代码都是邻接矩阵实现,试着改成了邻接表. #include <iostream> #include <cstdio> #inclu ...

  2. nyoj 239 月老的难题【匈牙利算法+邻接表】

    月老的难题 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述 月老准备给n个女孩与n个男孩牵红线,成就一对对美好的姻缘. 现在,由于一些原因,部分男孩与女孩可能结成幸福 ...

  3. hdu 2444 The Accomodation of Students(二分匹配 匈牙利算法 邻接表实现)

    The Accomodation of Students Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ( ...

  4. ural 1109,NYOJ 239,匈牙利算法邻接表

    NYOJ 239:http://acm.nyist.net/JudgeOnline/problem.php?pid=239 ural 1109 :http://acm.timus.ru/problem ...

  5. ZSTU OJ 3999 零基础学算法---邻接表

    题目:Click here 题意:我就喜欢中文题! 分析:这个题虽然是中文题,但是还是有一点费解的.其实就是给你一棵树,是用图的形式给你的,只知道a,b之间有一条边,并不知道谁是父,谁是子.思路就是先 ...

  6. 网络流三大算法【邻接矩阵+邻接表】POJ1273

    网络流的基本概念跟算法原理我是在以下两篇博客里看懂的,写的非常好. http://www.cnblogs.com/ZJUT-jiangnan/p/3632525.html http://www.cnb ...

  7. 图结构练习——判断给定图是否存在合法拓扑序列(dfs算法(第一个代码),邻接矩阵(前两个代码),邻接表(第三个代码))

    sdut 2140 图结构练习——判断给定图是否存在合法拓扑序列 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述  给定一个有向图 ...

  8. 最小生成树Kruskal算法(邻接矩阵和邻接表)

    最小生成树,克鲁斯卡尔算法. 算法简述: 将每个顶点看成一个图. 在所有图中找权值最小的边.将这条边的两个图连成一个图, 重复上一步.直到只剩一个图. 注:将abcdef每个顶点看成一个图.将最小权值 ...

  9. 最小生成树Prim算法(邻接矩阵和邻接表)

    最小生成树,普利姆算法. 简述算法: 先初始化一棵只有一个顶点的树,以这一顶点开始,找到它的最小权值,将这条边上的令一个顶点添加到树中 再从这棵树中的所有顶点中找到一个最小权值(而且权值的另一顶点不属 ...

随机推荐

  1. CJOJ1857 -PG图

    Description 背景 LDN不知道为什么特别喜欢PG,也许是某种原因吧…… 有一天,他发明了一个游戏“PG图”. 问题描述 给定一个有向图,每条边都有一个权值. 每次你可以选择一个节点u和一个 ...

  2. Paratroopers(最小割模型)

    http://poj.org/problem?id=3308 题意:一个m*n的网格,有L位火星空降兵降落在网格中,地球卫士为了能同时消灭他们,在网格的行或列安装了一个枪支,每行或每列的枪支都能消灭这 ...

  3. 如何解决error LNK2001(转载)

    转自:http://www.cnblogs.com/myzhijie/articles/1658545.html 解决外部符号错误:_main,_WinMain@16,__beginthreadex ...

  4. mybatis or

    这两天项目用到mybatis,碰到and or的联合查询,语句像这样的 select * from table where xxx = "xxx" and (xx1="x ...

  5. [转]Android定时刷新UI界面----Handler

    本文转自:http://blog.csdn.net/macong01/article/details/7479266 本想做一个软件可以对UI界面进行定时更新,找了一些资料,先贴一个简单的定时更新界面 ...

  6. 兼容浏览器 div固定浏览器窗口底部 浮动div

    css内容: <style type="text/css"> #ken_BB { padding-right:30px; text-align: center; col ...

  7. ssh项目导入报the import javax.servlet cannot be resolved

    在做javaWeb项目时,我们经常会出现丢失包的情况,如下图所示的错误,我们应该怎么解决呢? 根据网上教程向工程中加入tomcat的servlet-api.jar和jsp-api.jar的包 此时项目 ...

  8. Java学习笔记_网络+多线程

    支持同时收发的客户端和服务器端 客户端 import javax.swing.*; import java.awt.*; import java.io.*; import java.net.*; im ...

  9. SV creation order

    SystemVerilog Instance Worlds When generating an UVM testbench and in particular the DUT - testbench ...

  10. 使用Kettle增量抽取MongoDB数据实践

    需求: 增量抽取MongoDB数据并加载到MSSQL 由于不能使用关系型数据库的自定义SQL, 所以主要遇到的问题有: 增量时间的查询和参数控制 ETL的批次信息和调用参数的写入 第一个问题的解决如下 ...