Pagini recente » fmi-no-stress-9-warmup | Cod sursa (job #2153088) | Cod sursa (job #1389443) | Cod sursa (job #259121) | Cod sursa (job #411632)
Cod sursa(job #411632)
//Bellman Ford cu coada!
#include<fstream>
#include<vector>
#include<algorithm>
#include<queue>
#define INF 0x3f3f3f3f
#define SIZE 50005
#define mp make_pair
#define pb push_back
using namespace std;
ifstream in("dijkstra.in");
ofstream out("dijkstra.out");
int N, M, dmin[SIZE];
vector< pair<int, int> > graf[SIZE];
int main()
{
int i, x, y, c;
in >> N >> M;
for(i = 0; i < M; in >> x >> y >> c, graf[x].pb(mp(y, c)), i++);
bool viz[SIZE];
queue<int> Q;
memset(dmin, INF, sizeof(dmin));
memset(viz, false, sizeof(viz));
dmin[1] = 0;
Q.push(1);
viz[1] = true;
while(!Q.empty())
{
int nod = Q.front();
Q.pop();
viz[nod] = false;
for(vector< pair<int, int> >::iterator it = graf[nod].begin(); it != graf[nod].end(); ++it)
{
if(dmin[nod] + it->second < dmin[it->first])
{
dmin[it->first] = dmin[nod] + it->second;
if(!viz[it->first])
{
Q.push(it->first);
viz[it->first] = true;
}
}
}
}
for(i = 2; i <= N; i++)
out << (dmin[i] < INF ? dmin[i] : 0) << " ";
}