您的位置:首页 > 其它

图论基础算法

2016-08-17 08:07 369 查看
dijkstral堆优化算法

double D[105];
bool inq[105];
bool spfa(int start)
{
for(int i=1;i<=N;i++)  D[i]=dbinf;
memset(inq,false,sizeof(inq));
D[start]=0.0;
queue<int> que;
que.push(start);
while(!que.empty())
{
int now=que.front();  que.pop();
inq[now]=false;
for(int i=1;i<=N;i++)
if(i!=now&&dist[i][now]<=10.0&&D[i]>D[now]+dist[i][now])
{
D[i]=D[now]+dist[i][now];
if(!inq[i])  { inq[i]=true; que.push(i); }
}
}
for(int i=1;i<=N;i++)
{
if(D[i]>10000000.0)  return false;
ans=max(ans,D[i]);
}
return true;
}


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: