Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
不明白为什么选G++ 会RE 而C++就AC了#include<cstdio> #include<vector> #include<iostream> #include<cstring> using namespace std; const int N = 1009 ; vector<int> G[N]; double mp[N][N],dis[N],co[N][N]; bool vis[N]; bool flag = false ; void f(int n){ int h = n ; while(h--) { int max_p ; double max_d = 0 ; for(int i = 1 ; i <= n ; ++ i) { if(!vis[i] && dis[i] > max_d ){ max_d = dis[max_p = i]; } } vis[max_p] = true ; int u = max_p ; for(int i = 0 ; i< G[u].size() ;++ i ){ int v = G[u][i]; if(vis[v]) continue; dis[v] = max(dis[v],(dis[u]-co[u][v])*mp[u][v]); } } return ; } void g (int n){ for(int i = 1 ; i <= n ; ++ i){ for(int j = 1 ; j <= n ; ++ j) { if(i==j) continue ; if(dis[j] < (dis[i]-co[i][j])*mp[i][j] ) { flag = true ; return ; } } } return ; } int main (){ int n,m,s; double v ; scanf("%d%d%d%lf",&n,&m,&s,&v); for(int i = 1 ; i <= m ; ++ i){ int a,b; double e1,c1,e2,c2; scanf("%d%d%lf%lf%lf%lf",&a,&b,&e1,&c1,&e2,&c2); mp[a][b] = e1,mp[b][a] = e2; co[a][b] = c1,co[b][a] = c2; G[a].push_back(b),G[b].push_back(a); } dis[s] = v ; //vis[s] = true ; f(n); g(n); if(flag) cout<<"YES"<<endl; else cout<<"NO"<<endl; return 0 ; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator