Pagini recente » Cod sursa (job #1790501) | Cod sursa (job #1129981) | Cod sursa (job #3145623) | Cod sursa (job #1827169) | Cod sursa (job #1095373)
#include <fstream>
#include <queue>
#include <vector>
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
struct muchie{int y,c;}el;
vector<muchie> a[50001];
vector<muchie>::iterator it;
#define INF 99999
int x,n,m,i,D[50001];
struct cmp{
bool operator()(int x,int y) const
{
if(D[x]<D[y])
return 1;
else
return 0;
}
};
priority_queue<int,vector<int>,cmp> heap;
int main()
{
f>>n>>m;
for(i=1;i<=m;i++)
{f>>x>>el.y>>el.c;
a[x].push_back(el);}
for(i=1;i<=n;i++)
D[i]=INF;
for(it=a[1].begin();it!=a[1].end();++it)
{D[it->y]=it->c;
heap.push(it->y);}
while(!heap.empty())
{
x=heap.top();heap.pop();
for(it=a[x].begin();it!=a[x].end();++it)
if(D[x]+it->c<D[it->y])
{
D[it->y]=D[x]+it->c;
heap.push(it->y);
}
}
for(i=2;i<=n;i++)
if(D[i]==INF)
g<<0<<' ';
else
g<<D[i]<<' ';
f.close();g.close();
}