题目链接:http://poj.org/problem?id=1511

嗯,最后一次写SPFA了,以后就套模板了。

题意:给出n个点和n条有向边,求所有点到源点1的来回最短路之和(保证每个点都可以往返源点1).

思路:建反图,从任意一点回来,就变成了反图上的从1到任意一点去。

next记录前驱,head[u],记录u是在第几条边,然后往前扫。例如:edge[0].next = head[1] =0;head[1] = 0;edge[3].next = head[1] =0;head[1] =3;

再扫的时候就是,3->0;

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<vector>
#include<queue>
using namespace std;
#define MAXN 1000100
#define inf 1LL<<60 struct Edge
{
int v,w,next;
} edge1[MAXN*],edge2[MAXN*]; int cnt[MAXN];
int head1[MAXN],head2[MAXN];
long long dist[MAXN];
bool mark[MAXN];
int n,m,NE; void add(Edge *edge,int *head,int u,int v,int w)
{
edge[NE].v=v;
edge[NE].w=w;
edge[NE].next=head[u]; //边的前驱是head[u],之前的那条边
head[u]=NE; //head[u] 重新覆盖
} long long SPFA(Edge *edge,int *head,int u)
{
memset(mark,false,sizeof(mark));
memset(cnt,,sizeof(cnt)); for(int i=; i<=n; i++)
dist[i]=inf;
dist[u]=;
mark[u] =true;
queue<int>Q;
Q.push(u);
while(!Q.empty())
{
u=Q.front();
Q.pop();
mark[u]=false;
for(int i=head[u]; i!=-; i=edge[i].next)
{
int v=edge[i].v,w=edge[i].w;
if(dist[u]+w<dist[v])
{
dist[v]=dist[u]+w;
if(!mark[v])
{
mark[v]=true;
Q.push(v); /*if(++cnt[v]>n)
return false;*/
}
}
}
}
long long ans=;
for(int i=; i<=n; i++)ans+=dist[i];
return ans;
} int main()
{
int _case,u,v,w;
scanf("%d",&_case);
while(_case--)
{
scanf("%d%d",&n,&m);
NE=;
memset(head1,-,(n+)*sizeof(int));
memset(head2,-,(n+)*sizeof(int));
while(m--)
{
scanf("%d%d%d",&u,&v,&w);
add(edge1,head1,u,v,w);
add(edge2,head2,v,u,w);//建反图
NE++;
}
printf("%lld\n",SPFA(edge1,head1,)+SPFA(edge2,head2,));
}
return ;
}

Poj(1511),SPFA的更多相关文章

  1. Poj(3259),SPFA,判负环

    题目链接:http://poj.org/problem?id=3259 Wormholes Time Limit: 2000MS   Memory Limit: 65536K Total Submis ...

  2. Poj(2679),SPFA,二级比较

    题目链接:http://poj.org/problem?id=2679 嗯,思路清晰,先DFS看是不是通路,接着就是SPFA找最短路(路是费用,费用相同就比较路的长度). 超哥的代码还有一点问题,初始 ...

  3. poj 1511(spfa)

    ---恢复内容开始--- http://poj.org/problem?id=1511 一个spfa类的模板水题. 题意:就是求从1到n个点的来回的所有距离和. 对spfa类的题还是不太熟练,感觉还是 ...

  4. POJ 1511 Invitation Cards / UVA 721 Invitation Cards / SPOJ Invitation / UVAlive Invitation Cards / SCU 1132 Invitation Cards / ZOJ 2008 Invitation Cards / HDU 1535 (图论,最短路径)

    POJ 1511 Invitation Cards / UVA 721 Invitation Cards / SPOJ Invitation / UVAlive Invitation Cards / ...

  5. POJ 3013 Big Christmas Tree(最短Dijkstra+优先级队列优化,SPFA)

    POJ 3013 Big Christmas Tree(最短路Dijkstra+优先队列优化,SPFA) ACM 题目地址:POJ 3013 题意:  圣诞树是由n个节点和e个边构成的,点编号1-n. ...

  6. POJ 1860 Currency Exchange / ZOJ 1544 Currency Exchange (最短路径相关,spfa求环)

    POJ 1860 Currency Exchange / ZOJ 1544 Currency Exchange (最短路径相关,spfa求环) Description Several currency ...

  7. [POJ] 1511 Invitation Cards

    Invitation Cards Time Limit: 8000MS   Memory Limit: 262144K Total Submissions: 18198   Accepted: 596 ...

  8. DIjkstra(反向边) POJ 3268 Silver Cow Party || POJ 1511 Invitation Cards

    题目传送门 1 2 题意:有向图,所有点先走到x点,在从x点返回,问其中最大的某点最短路程 分析:对图正反都跑一次最短路,开两个数组记录x到其余点的距离,这样就能求出来的最短路以及回去的最短路. PO ...

  9. HDU 1535 Invitation Cards (POJ 1511)

    两次SPFA. 求 来 和 回 的最短路之和. 用Dijkstra+邻接矩阵确实好写+方便交换.可是这个有1000000个点.矩阵开不了. d1[]为 1~N 的最短路. 将全部边的 邻点 交换. d ...

随机推荐

  1. js方法和prototype

    JS中的方法可以分为三类 1.对象方法 2.类方法 3.原型方法 例: function People(name) { this.name=name; //对象方法 this.Introduce=fu ...

  2. Lintcode: Majority Number III

    Given an array of integers and a number k, the majority number is the number that occurs more than 1 ...

  3. js eventhandler

    1.获取所有eventhandler 使用 getEventHandler(target) 2.target.addEventHandler(type,handler,userCapture?) 3. ...

  4. Android so lib库远程http下载和动态注册

    一.背景 在开发Android应用程序的实现,有时候需要引入第三方so lib库,但第三方so库比较大,例如开源第三方播放组件ffmpeg库, 如果直接打包的apk包里面, 整个应用程序会大很多.经过 ...

  5. 解决Android抽屉被击穿问题

    1,创建一个抽屉DrawerLayout,在V4包下android.support.v4.widget.DrawerLayout,在要设置抽屉的布局中设置android:layout_gravity= ...

  6. paper 77:[转载]ENDNOTE使用方法,常用!

    一.简介  EndNote是一款用于海量文献管理和批量参考文献管理的工具软件,自问世起就成为科研界的必备武器.在前EndNote时代,文献复习阶段从各大数据库中搜集到的文献往往千头万绪.或重复或遗漏, ...

  7. 《zw版·Halcon-delphi系列原创教程》航母舰载机·视觉定位标志的识别代码

    <zw版·Halcon-delphi系列原创教程>航母舰载机·视觉定位标志的识别代码 航母舰载机机身上的黄黑圆圈的标志是什么意思,辐射?核动力?战术核弹? <百度百科>介绍如下 ...

  8. [置顶] 关于产品的一些思考——腾讯之UIDesigner

        首先要赞一下这个软件,上手快,效果好,不过还有些有待提高的地方. 1.不稳定     设置了页面跳转效果后,继续编辑,前边已经编辑过的页面跳转效果有的会失效,或者变为其他跳转效果. 2.键盘无 ...

  9. !important------至高无上的宝剑

    如上图,不同来源的两个样式,第一个样式设置了font-weight,第二个没有,浏览器会把它叠加在一起,即浏览器会把各个零散的整合成一个整体.第一个样式color:red,第二个样式color:blu ...

  10. V4L2学习笔记【转】

    本文转载自:http://www.cnblogs.com/silence-hust/p/4464291.html v4l2,一开始听到这个名词的时候,以为又是一个很难很难的模块,涉及到视频的处理,后来 ...