#include<cstdio>
#include<cmath>
#include<string>
#include<sstream>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
void init()
{
freopen("practicein.txt","r",stdin);
freopen("practiceout.txt","w",stdout);
}
bool spfa(int s)
{
queue<int> q;
memset(inq, 0, sizeof(inq));
memset(cnt, 0, sizeof(cnt));
for(int i = 0; i < n; i++) d[i] = INF;
d[s] = 0;
inq[s] = true;
q.push(s);
while(!q.empty())
{
int u = q.front(); q.pop();
inq[u] = false;
for(int i = 0; i < G[u].size(); i++)
{
Edge& e = edges[G[u][i]];
if(d[e.to] > d[u] + e.dist && d[u] < INF)
{
d[e.to] = d[u]+e.dist;
if(!inq[e.to])
{
q.push(e.to);
inq[e.to] = true;
if(++cnt[e.to] > n) return false;
}
}
}
}
return true;
}
void readdata()
{
}
void work()
{
}
int main()
{
init();
readdata();
work();
return 0;
}
spfa
最新推荐文章于 2018-07-19 20:50:53 发布