| ||||||||||
| 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 | |||||||||
不知道WA了多少次了,求大神#include<cstdio>
#include<cstring>
using namespace std;
const int maxn=105;
int n,m,s;
double cost[maxn][maxn],dist[maxn],d[maxn][maxn],v;
int vis[maxn][maxn];
int main()
{ scanf("%d %d %d %lf\n",&n,&m,&s,&v);
memset(dist,0,sizeof(dist));
memset(vis,0,sizeof(vis));
for (int i=1; i<=m; ++i)
{
int x,y;
scanf("%d %d",&x,&y);
scanf("%lf %lf %lf %lf\n",&d[x][y],&cost[x][y],&d[y][x],&cost[y][x]);
vis[x][y]=1; vis[y][x]=1;
}
int vis1[maxn];
int sum[maxn];
memset(sum,0,sizeof(sum));
memset(vis1,0,sizeof(vis1));
int head=0,tail=1;
int q[maxn];
memset(q,0,sizeof(q));
q[1]=s; vis1[s]=1; dist[s]=v;
while (head<tail)
{
head++;
int x=q[head];
vis1[x]=0;
sum[x]++;
if (sum[x]>n) break;
for (int i=1; i<=n; ++i)
if (vis[x][i] && dist[i]<(dist[x]-cost[x][i])*d[x][i])
{
dist[i]=(dist[x]-cost[x][i])*d[x][i];
if (!vis1[i])
{
tail++;
q[tail]=i;
vis1[i]=1;
}
}
}
if (dist[s]>v) printf("%s\n","YES");
else printf("%s\n","NO");
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator