#include<bits/stdc++.h>
using namespace std;
const int N = 200001;
int n,m;
double dis[N];
bool vis[N];
int cnt,head[N],nxt[N],to[N],f[N],d[N];
void add(int x,int y,int z,int w)
{
to[++cnt] = y;
nxt[cnt] = head[x];
f[cnt] = z;
d[cnt] = w;
head[x] = cnt;
}
bool spfa(double x)
{
deque<int> q;
for(int i = 1;i <= n;i++) dis[i] = 1e10;
memset(vis,0,sizeof(vis));
q.push_back(1);
vis[1] = 1;
dis[1] = 0;
while(!q.empty())
{
int t = q.front();
q.pop_front();
vis[t] = 0;
for(int i = head[x];i;i = nxt[i])
if(dis[to[i]] > dis[t] + (x * d[i] - f[i]))
{
dis[to[i]] = dis[t] + (x * d[i] - f[i]);
if(!vis[to[i]])
{
vis[to[i]] = 1;
if(q.empty() || dis[to[i]] < dis[q.front()]) q.push_front(to[i]);
else q.push_back(to[i]);
}
}
}
return dis[n] <= 0;
}
int main()
{
scanf("%d%d",&n,&m);
int x,y,z,w;
for(int i = 1;i <= m;i++)
{
scanf("%d%d%d%d",&x,&y,&z,&w);
add(x,y,z,w);
}
double l = 0.0000000001,r = 10000.00000000001;
while(r - l >= 0.0000000001)
{
double mid = (l + r) / 2;
//cout << mid << endl;
if(spfa(mid)) l = mid + 0.0000000001;
else r = mid;
}
printf("%.10f",l);
return 0;
}
报错信息:29行 19列 invalid types int[200001][double] for array subscript
(改成什么变量名都没用!)