博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj 3013 SPFA
阅读量:6449 次
发布时间:2019-06-23

本文共 1184 字,大约阅读时间需要 3 分钟。

首先看题看的很懵..

然后这题直接没想用Djstra做 TLE了。看discuss,Dijstra要用堆优化,也可以用SPFA做。

这里在网上找了这两种做法的区别,点多稠密图用Dij,以为它是操作点的,反之则用SPFA。

好久没做题了,前一段时间尽做水题去了。

还有这一道题的数据巨大,各种WA。要用__int64,同时SPFA中要注意环的问题。dis的初始化也要注意全部初始为无穷大。

先给出SPFA的AC代码:

#include
#include
#include
#include
#include
using namespace std;#define MAXN 50010#define MAXM 200010#define inf 20000000000struct Node{ int v,next; __int64 c;}edge[MAXM];bool flag;int que[MAXM];int head[MAXN];int tail[MAXN];__int64 dis[MAXN];bool vis[MAXN];int a[MAXN];int fa[MAXN];int n,m,e;void addEdge(int u,int v,int c){ edge[e].v=v; edge[e].c=c; edge[e].next=head[u]; head[u]=e; e++; edge[e].v=u; edge[e].c=c; edge[e].next=head[v]; head[v]=e; e++;}void spfa(int s){ memset(vis,false,sizeof(vis)); memset(fa,0,sizeof(fa)); for(int i=0;i
dis[pre]+edge[j].c) { dis[v]=dis[pre]+edge[j].c; if(!vis[v]) { vis[v]=true; que[rear++]=v; } } } vis[pre]=false; }}int main(){ int T; scanf("%d",&T); while(T--) { e=0; memset(head,-1,sizeof(head)); scanf("%d%d",&n,&m); for(int i=0;i

转载于:https://www.cnblogs.com/amourjun/p/5134135.html

你可能感兴趣的文章
JMeter IP欺骗压测
查看>>
Serializers 序列化组件
查看>>
最简单的RPC框架实现
查看>>
Servlet 技术全总结 (已完成,不定期增加内容)
查看>>
[JSOI2008]星球大战starwar BZOJ1015
查看>>
CountDownLatch与thread-join()的区别
查看>>
linux下MySQL安装登录及操作
查看>>
centos 7 部署LDAP服务
查看>>
揭秘马云帝国内幕:马云的野心有多大
查看>>
topcoder srm 680 div1
查看>>
算法专题(1)-信息学基本解题流程!
查看>>
模拟文件系统
查看>>
使用SSH连接Windows10 Ubuntu (WSL),Pycharm
查看>>
poj2155
查看>>
CSS动画之转换模块
查看>>
swift - UITextField 的用法
查看>>
检索和关闭游标+检索游标+关闭游标
查看>>
[开源]KJFramework.Message 智能二进制消息框架 -- 性能提升
查看>>
iOS项目分层
查看>>
CocosCreator 小知识
查看>>