模板+解题报告:luogu P3385 【模板】负环
题目链接:P3385 【模板】负环
缩点板子。
看日报上说\(DFS\)会炸(我确实打炸了),就根据他的说明\(yy\)了\(BFS\),多一个记录步数的数组即可(我用的\(len[]\)),若\(len_i>n\),就说明遁入无限的负环中了,返回即可,跑得比我那一页快人均\(200ms\)的样子(没有卡常)(其实一堆Unshown).
\(Code\):
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
const int inf=1e9;
int t,n,m,l,r,s;
int vis[2005],dis[2005];
int ans=0;
int len[2005];
struct node
{
int to,nxt,w;
}e[2005<<1];
int head[2005],cnt=0;
queue<int> q;
void init(int n)
{
while(!q.empty()) q.pop();
memset(vis,0,sizeof(vis));
memset(e,0,sizeof(e));
memset(head,0,sizeof(head));
for(int i=2;i<=n;i++) dis[i]=inf;
dis[1]=0;
vis[1]=1;
len[1]=0;
cnt=0;
}
void add(int u,int v,int c)
{
e[++cnt].to=v;
e[cnt].nxt=head[u];
e[cnt].w=c;
head[u]=cnt;
}
bool spfa()
{
q.push(1);
while(!q.empty())
{
int k=q.front();
q.pop();
vis[k]=0;
for(int i=head[k];i;i=e[i].nxt)
{
int j=e[i].to;
if(dis[j]>dis[k]+e[i].w)
{
dis[j]=dis[k]+e[i].w;
len[j]=len[k]+1;
if(len[j]>n) return true;
if(!vis[j]) vis[j]=1,q.push(j);
}
}
}
return false;
}
int main()
{
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&m);
init(n);
for(int i=1;i<=m;i++)
{
scanf("%d%d%d",&l,&r,&s);
add(l,r,s);
if(s>=0) add(r,l,s);
}
if(spfa()) printf("YE5\n");
else printf("N0\n");
}
return 0;
}
吐槽一下,这个“YE5”是啥鬼?考验抠字眼耶......
模板+解题报告:luogu P3385 【模板】负环的更多相关文章
- 洛谷P3385判负环——spfa
题目:https://www.luogu.org/problemnew/show/P3385 两种方法,dfs和bfs: 一开始写的dfs,要把dis数组初值赋成0,这样从一个连着负边的点开始搜: 在 ...
- POJ 3259——Wormholes——————【最短路、SPFA、判负环】
Wormholes Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Submit St ...
- 【luogu P3385 负环】 模板
题目链接:https://www.luogu.org/problemnew/show/P3385 SPFA判负环. 这个题必须卡一卡才过得去. 按理说对于一个负环点应当是入队 > n次. 但是这 ...
- SPFA - Luogu 3385 【模板】负环
[模板]负环 描述 找负环 输入 第一行一个正整数T表示数据组数,对于每组数据: 第一行两个正整数N M,表示图有N个顶点,M条边 接下来M行,每行三个整数a b w,表示a->b有一条权值为w ...
- 「P3385」【模板】负环(spfa
题目描述 暴力枚举/SPFA/Bellman-ford/奇怪的贪心/超神搜索 输入输出格式 输入格式: 第一行一个正整数T表示数据组数,对于每组数据: 第一行两个正整数N M,表示图有N个顶点,M条边 ...
- 洛谷 P3385 【模板】负环
P3385 [模板]负环 题目描述 暴力枚举/SPFA/Bellman-ford/奇怪的贪心/超神搜索 输入输出格式 输入格式: 第一行一个正整数T表示数据组数,对于每组数据: 第一行两个正整数N M ...
- 洛谷 P3385 【模板】负环 题解
P3385 [模板]负环 题目描述 暴力枚举/SPFA/Bellman-ford/奇怪的贪心/超神搜索 寻找一个从顶点1所能到达的负环,负环定义为:一个边权之和为负的环. 输入格式 第一行一个正整数T ...
- [P3385]【模板】负环 (spfa / bellman-ford)
终于开始认真对待图论了 因为听说一直是提高组的,动得很少,直到现在机房打提高的氛围下,开始学一些皮毛的东西 模板题目链接 这是一道求负环的题目,照理来说大家都是用spfa来判断负环的 但是我觉得bel ...
- 洛谷P3385 【模板】负环(DFS求环)
洛谷题目传送门 HNOI爆零前回刷模板题 非常不正经的题目,目前并没有合适的优秀算法,就算是大家公认的dfs(还是不要强行叫dfs-spfa吧,概念应该不一样,这就是暴力dfs松弛答案) 但是对于随机 ...
随机推荐
- C:gcc的基本使用
分布编译 预处理:gcc -E hello.c -o hello.i 编 译:gcc -S hello.i -o hello.s 汇 编:gcc -c hello.s -o hello.o 链 接:g ...
- twisted task.cpperator
twisted task.cpperator 1. twisted task.cpperator 1.1. 简介-cooperator 官方文档: https://twistedmat ...
- Spring Boot Web 开发@Controller @RestController 使用教程
在 Spring Boot 中,@Controller 注解是专门用于处理 Http 请求处理的,是以 MVC 为核心的设计思想的控制层.@RestController 则是 @Controller ...
- mpvue路由传参报错Cannot read property 'query' of undefined
在mpvue编写的小程序项目中,页面跳转间我希望通过编程式导航传递些参数 传参页面代码: this.$router.push({path:'/pages/login/changePassword/ma ...
- DHCP原理及报文格式
DHCP原理及报文格式 DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是IETF为实现IP的自动配置而设计的协议,它可以为客户机自动分配IP地址. ...
- ipfs 资料汇集
目录 js ipfs u can use wikipeida here js ipfs https://github.com/ipfs/js-ipfs u can use wikipeida here ...
- [ DLPytorch ] 批量归一化与残差网络
批量归一化 通常来说,数据标准化预处理对于浅层模型就足够有效了.随着模型训练的进行,当每层中参数更新时,靠近输出层的输出较难出现剧烈变化.但对深层神经网络来说,即使输入数据已做标准化,训练中模型参数的 ...
- pandas中数据框DataFrame获取每一列最大值或最小值
1.python中数据框求每列的最大值和最小值 df.min() df.max()
- 工具,Linux - tree命令,显示程序树型结构
sudo apt-get install tree tree --help
- 什么是redis事务
一.什么是redis事务? 可以一次性执行多条命令,本质上是一组命令的集合.一个事务中的所有命令都会序列化,然后按顺序地串行化执行,而不会被插入其他命令 二.Redis 事务可以做什么? 一个队列中, ...