POJ 1860 C++ (图论)

//知道了什么是bellman_ford;
//一定要坚持下去
#include<iostream>
#define eps 1e-8
using namespace std;
typedef struct E{
int v,u;
double r,c;
};

int n,m,s,num;
double money,d[101];
E e[201];
bool  bellman()
{ int flag;
  memset(d,0,sizeof(d));
  d[s]=money;
  while(d[s]<=money+eps)
      { flag=0;
        for(int i=0;i<num;i++)
            if(d[e[i].v]+eps<(d[e[i].u]-e[i].c) * e[i].r)
              { d[e[i].v]=(d[e[i].u]-e[i].c)*e[i].r;
                flag=1;
               }

           if(!flag)
                 return d[s]>money+eps;
         }
     return true;          
}

int main()
{int V,U;
double cv,rv,cu,ru;
   freopen("in.txt","r",stdin);
   freopen("out.txt","w",stdout);
  while((scanf("%d%d%d%lf",&n,&m,&s,&money))!=EOF)
     {num=0;
     for(int i=1;i<=m;i++)
          {scanf("%d%d%lf%lf%lf%lf",&U,&V,&rv,&cv,&ru,&cu);
            e[num].v=V;
            e[num].u=U;
            e[num].r=rv;
            e[num++].c=cv;
            e[num].v=U;
            e[num].u=V;
            e[num].r=ru;
            e[num++].c=cu;
           }
       if(bellman())
          printf("YES\n");
       else
          printf("NO\n");
      }

      return 0;
}            

posted on 2008-11-27 00:15 蜗牛 阅读(1643) 评论(0)  编辑 收藏 引用 所属分类: ACM ICPC


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2008年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

导航

统计

常用链接

留言簿(1)

随笔分类(20)

随笔档案(20)

Favorites

搜索

最新评论

阅读排行榜

评论排行榜