题目链接: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. tinyxml安装和使用

    下载: 官方文档:http://www.grinninglizard.com/tinyxmldocs/index.html 中文翻译:http://www.cnblogs.com/kex1n/arch ...

  2. Codeforce Round #227 Div2

    这回的看错时间了! 发现理论可以涨分的- -

  3. 变形--缩放 scale()

    缩放 scale()函数 让元素根据中心原点对对象进行缩放. 缩放 scale 具有三种情况: 1. scale(X,Y)使元素水平方向和垂直方向同时缩放(也就是X轴和Y轴同时缩放) 例如: div: ...

  4. centos 关闭不使用的服务

    CentOS关闭服务的方法: chkconfig –level 2345 服务名称 off 服務名稱 建議 說明 acpid 停用 Advanced Configuration and Power I ...

  5. Tomcat上的项目部署到WebLogic上の注意事项

    1.修改web.xml: <!-- <display-name>weboutweb</display-name> --> <!-- 注释掉 display-n ...

  6. PAT乙级 1012. 数字分类 (20)

    1012. 数字分类 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 给定一系列正整数,请按要求对数字进 ...

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

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

  8. drupal 做301跳转(删除url里的www), 关键代码 可用到任何网站

    //hook_init(); function ex_init(){ //删除 url 前面的 www if (substr($_SERVER['HTTP_HOST'],0,3) == 'www'){ ...

  9. struts2 笔记03 异常支持、防止页面刷新和后退、方法验证

    Struts2对异常支持(声明式异常.自动的异常处理), 异常处理(运行期异常事务自动回滚) 1. 自定义异常类,继承RuntimeException或Exception实现构造方法. 2. 配置异常 ...

  10. 69道Java Spring 面试&笔试题

    目录 Spring 概述 依赖注入 Spring beans Spring注解 Spring数据访问 Spring面向切面编程(AOP) Spring MVC Spring 概述 1. 什么是spri ...