首页 > 其他分享 >P3385 【模板】负环

P3385 【模板】负环

时间:2023-12-06 11:44:35浏览次数:29  
标签:int len 负环 P3385 edge latest now 模板 dis

不能用dijkstra算法 的原因(个人拙见):

#include<bits/stdc++.h>
using namespace std;
int n,m;
struct
{
    int head;
    int to;
    int val;
}edge[10004];
int len=0;
int latest[2005]={0};
void add(int u,int v,int w)
{
    edge[++len].to=v;
    edge[len].val=w;
    edge[len].head=latest[u];
    latest[u]=len;
}

int func()
{
    int cnt[2005]={0};
    int dis[2005]={0};
    memset(dis,0x3f3f3f,sizeof dis);
    int vis[2005]={0};
    queue<int> q;
    q.push(1);
    vis[1]=1;
    dis[1]=0;
    while(!q.empty())
    {
        int now=q.front();
        q.pop();
        vis[now]=0;
        cnt[now]++;
        if(cnt[now]>n)return 1;
        for(int i=latest[now];i!=0;i=edge[i].head)
        {
            int next=edge[i].to;
            int ren=edge[i].val;
            if(dis[next]>dis[now]+ren)
            {
                dis[next]=dis[now]+ren;
                q.push(next);
            }
        }
    }
    return 0;
}
int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d%d",&n,&m);
        for(int i=1;i<=m;i++)
        {
            int x,y,v;
            scanf("%d%d%d",&x,&y,&v);
            add(x,y,v);
            if(v>=0)add(y,x,v);
        }
        if(func())puts("YES");
        else puts("NO");
        memset(latest,0,sizeof latest);
        len=0;
    }
    return 0;
}

标签:int,len,负环,P3385,edge,latest,now,模板,dis
From: https://www.cnblogs.com/pure4knowledge/p/17879170.html

相关文章

  • Mercury性能测试模板
    xxxxxxxxxx性能测试报告                                                                   2023年11月8日    目 录   1前言   11第一章XXXXXXXX核心业务系统性能测试概述   1......
  • 模板函数
    引入现在要实现一个比较函数cmp,要求实现int,double,string(按字典序)的大小比较。一般来讲,常用的做法是写4个重载函数,分别对应4种不同的实参类型。不想这么麻烦?似乎可以使用无类型指针强行对这四种类型做适配。但是无类型指针每次调用之前必须显式地告诉它数据类型,但是这个......
  • C++运行期多态和编译期多态(以不同的模板参数调用不同的函数)
    在面向对象C++编程中,多态是OO三大特性之一,这种多态称为运行期多态,也称为动态多态;在泛型编程中,多态基于template(模板)的具现化与函数的重载解析,这种多态在编译期进行,因此称为编译期多态或静态多态。<h1"="">1运行期多态运行期多态的设计思想要归结到类继承体系的设计上去。对......
  • 矩阵模板
    #include<bits/stdc++.h>usingnamespacestd;structMatrix{ usingi64=longlong; i64N; vector<vector<i64>>A; Matrix(){N=0;} Matrix(intn){ N=n; A.resize(N+1); for(inti=0;i<=N;i++) A[i].resize(N......
  • 小谈设计模式(11)—模板方法模式
    (小谈设计模式(11)—模板方法模式)主要对目前市面上常见的23种设计模式进行逐一分析和总结,希望有兴趣的小伙伴们可以看一下,会持续更新的。希望各位可以监督我,我们一起学习进步,加油,各位。模板方法模式这是一种行为型设计模式,用于定义算法的框架,将算法的具体实现延迟到子类中。角......
  • 3、利用初始化好的虚拟机当作模板,用于克隆
    摘自:https://blog.51cto.com/mfc001/6408226 利用初始化好的虚拟机当作模板,用于克隆第一步:先拷贝个虚拟机当作模板[root@ubuntimages]#virt-clone-orocky8-f/var/lib/libvirt/images/rocky8-template.qcow2-nrocky8-templateAllocating'rocky8-templat......
  • 4、虚拟机单机、集群的克隆、删除脚本(以初始化好的虚拟机为模板)
    摘自:https://blog.51cto.com/mfc001/6408229 虚拟机克隆、删除脚本[root@ubunt~]#catclone.sh#!/bin/bash##./etc/init.d/functions(如果是ubuntu,注释此行)Red="\e[1;31m"Purple="\e[1;35m"Green="\e[1;32m"Blue="\e[1;3......
  • Django学习(二) 之 模板的使用
    写在前面昨晚应该是睡的最好一天吧,最近一个月睡眠好差,睡不着不说,而且半夜总醒,搞的我第二天就会超没精神。昨天下午去姐姐家,我刚进屋,小外甥直接就问我说:老舅,你都很长时间没来啦,**(前女友)哪去了,我们都好久没出溜溜了!我顿了下说,她不喜欢我们了,等以后天暖和,我们再去溜溜。......
  • 关于kmp模板
    那个求p串的next数组这个版本是下标从1开始的字符串,如果从0开始的话,可以在前面加空字符,然后p.size或者s.size的地方-1即可。nex[1]=0    for(inti=2,j=0;i<=p.size();i++){if(j&&p[i]!=p[j+1])j=nex[j];if(p[i]==p[j+1])j++;nex[i]=j;} kmp函数......
  • C++_线程池代码看C++类-模板-标准库
    C++线程池线程池的组成部分:线程池管理器(ThreadPoolManager):用于创建并管理线程池工作线程(WorkThread):线程池中线程任务接口(Task):每个任务必须实现的接口,以供工作线程调度任务的执行。任务队列:用于存放没有处理的任务。提供一种缓冲机制。 通过新......