• 题意:有一个\(n\)个点的有向图,从\(1\)出发,问是否有负环.

  • 题解:我们可以用SPFA来进行判断,在更新边的时候,同时更新路径的边数,因为假如有负环的话,SPFA这个过程一定会无限重复的遍历这个环,那么这个环中的边数也就会不断增加,因为我们只有\(n\)个点,所以假如某条路径的边数\(\ge n\)时,就说明有点重复使用了,也就说明一定存在负环.这题让我们从1开始走,所以只要对1初始化一下就行了.

  • 代码:

    struct misaka{
    int out;
    int val;
    }e; int t;
    int n,m;
    int dis[N];
    bool st[N];
    int cnt[N];
    vector<misaka> v[N]; bool spfa(){ queue<int> q; st[1]=true;
    dis[1]=0;
    q.push(1); while(!q.empty()){
    int node=q.front();
    q.pop(); st[node]=false; for(auto w:v[node]){
    int now=w.out;
    if(dis[now]>dis[node]+w.val){
    dis[now]=dis[node]+w.val;
    cnt[now]=cnt[node]+1;
    if(cnt[now]>=n) return true;
    if(!st[now]){
    st[now]=true;
    q.push(now);
    }
    }
    }
    }
    return false;
    } int main() {
    //ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    scanf("%d",&t);
    while(t--){
    scanf("%d %d",&n,&m);
    for(int i=1;i<=n;++i){
    dis[i]=INF;
    st[i]=false;
    cnt[i]=0;
    }
    for(int i=1;i<=m;++i){
    int a,b,val;
    scanf("%d %d %d",&a,&b,&val);
    if(val>=0){
    v[a].pb({b,val});
    v[b].pb({a,val});
    }
    else
    v[a].pb({b,val});
    } if(spfa()) puts("YES");
    else puts("NO");
    for(int i=1;i<=n;++i){
    v[i].clear();
    }
    } return 0;
    }

最新文章

  1. Ubuntu菜鸟入门(二)—— apt认知,且完善语言安装包
  2. bootstrap ace MVC
  3. delphi的tserversocket控件如何接收16进制数
  4. Sicily-1134
  5. CentOS安装配置Tomcat7
  6. 在Unity3D中实现安卓平台的本地通知推送
  7. hdu 5340 (manacher)
  8. 18 UI美化transition 图片过渡
  9. 强化学习(十一) Prioritized Replay DQN
  10. go 闭包程序解读
  11. IP通信基础课堂笔记----简答题
  12. Django--CRM--菜单排序等
  13. 转载ORM--EF框架
  14. PAT B1045 快速排序 (25 分)
  15. hdu 3308 LCIS(线段树区间合并)
  16. VIN码/车架号的详解,车架号识别,VIN码识别,OCR车架号识别能带来什么
  17. 根据数据库连接的java.sql.Connection获取数据库名称
  18. 2.ECMAScript 5.0
  19. 本地方法中printf如何传给java--java系统级命名管道
  20. Codeforces Round #522 Div2C(思维)

热门文章

  1. 【Linux】以001格式循环到100保证位数是3位
  2. P1220 关路灯(区间规划)
  3. SAP里会话结束方法(杀死进程)
  4. bootstrap弹出层嵌套弹出层后文本框不能获得焦点输入
  5. Linux内核分析_课程学习总结报告
  6. PCB导线长宽与电源压降
  7. Python内存浅析
  8. 如何实现new,call,apply,bind的底层原理。
  9. Web自动化测试python环境中安装 --selenium安装、火狐和火狐驱动版本、谷歌和谷歌驱动版本、测试
  10. moco框架实现重定向