poj 3259 Wormholes

bellmen_ford的应用:


Source Code

Problem: 3259  User: yanxiaoli 
Memory: 424K  Time: 875MS 
Language: G++  Result: Accepted 

Source Code 
#include<stdio.h>
int dis[500];
int  road[5300][3];
int t,n,m,w,tot,a,b,len;;
bool bellman()
{
  for(int i=0;i<=n;i++)
    dis[i]=99999;
  dis[1]=0;
  for(int i=0;i<=2*m+w;i++)
    for(int j=1;j<=2*m+w;j++)
    {
      if(dis[road[j][0]]>dis[road[j][1]]+road[j][2])
        dis[road[j][0]]=dis[road[j][1]]+road[j][2];
    }
    for(int j=1;j<=2*m+w;j++)
    {
      if(dis[road[j][0]]>dis[road[j][1]]+road[j][2])
        return true;
    }
    return false;
}
int main()
{
    scanf("%d",&t);
    while(t--)
    {
      scanf("%d%d%d",&n,&m,&w);
      tot=1;
      int i;
      for(i=1;i<=m;i++)
      {
         scanf("%d%d%d",&a,&b,&len);
         road[tot][0]=a;
         road[tot][1]=b;
         road[tot][2]=len;
         tot++;
         road[tot][0]=b;
         road[tot][1]=a;
         road[tot][2]=len;
         tot++;
      }
      for(i=1;i<=w;i++)
      {
         scanf("%d%d%d",&a,&b,&len);
         road[tot][0]=a;
         road[tot][1]=b;
         road[tot][2]=-1*len; 
         tot++;
      }  
      if(bellman()) printf("YES\n");
      else  printf("NO\n");
    } 
    return 0;
}         
         


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值