竹園論壇

標題: hoj 9 [打印本頁]

作者: domen111    時間: 2014-11-20 23:24
標題: hoj 9
這題是不是有甚麼奇怪陷阱? 網路上寫說要用long double結果我還是WA
而且要怎麼判斷什麼時候該用long double呢?

[C++] 純文本查看 復制代碼
#include<iostream>
#include<cfloat>
#include<iomanip>
using namespace std;
struct edge{int a,b; double cost;};
edge e[25010];
int main()
{
        ios::sync_with_stdio(0);
        cin.tie(0);
       
        int n,m,a,b;
        long double v;
        cin>>n>>m>>v>>a>>b;
        a--; b--;
        for(int i=0;i<m;i++)
        {
                int a,b;
                double c;
                cin>>a>>b>>c;
                a--; b--;
                e={a,b,c};
        }
       
        long double dis[2010];
        for(int i=0;i<n;i++)
                dis=DBL_MAX;
        dis[a]=v;
        for(int i=0;i<n;i++)
        {
                bool update=false;
                for(int i=0;i<m;i++)
                        if(dis[e.a]!=DBL_MAX && dis[e.a]*e.cost < dis[e.b])
                        {
                                dis[e.b] = dis[e.a]*e.cost;
                                update=true;
                        }
                if(!update) break;
                if(i==n-1) dis=0;
        }
        cout<<fixed<<setprecision(0)<<dis<<endl;
}






歡迎光臨 竹園論壇 (http://forum.tfcis.org/) Powered by Discuz! X3.2