Pagini recente » Cod sursa (job #1145828) | Cod sursa (job #3239281) | Cod sursa (job #1765646) | Cod sursa (job #3149209) | Cod sursa (job #555189)
Cod sursa(job #555189)
#include<fstream>
#include<vector>
#include<set>
#define nMAX 50001
#define cost first
#define poz second
#define INF 1<<30
using namespace std;
ifstream in("dijkstra.in");
ofstream out("dijkstra.out");
int N,M;
vector<int> dist(nMAX,INF);
vector< pair<int,int> > graf[nMAX];
set< pair<int,int> > H;
int main()
{
in>>N>>M;
for(int i=1;i<=M;i++)
{
int x,y,c;
in>>x>>y>>c;
graf[x].push_back(make_pair(c,y));
}
in.close();
dist[1]=0;
H.insert(make_pair(0,1));
while(!H.empty())
{
pair<int,int> x=*H.begin();
H.erase(H.begin());
vector<pair<int,int> >::iterator vecin;
for(vecin=graf[x.poz].begin();vecin!=graf[x.poz].end();vecin++)
{
if(dist[vecin->poz]>dist[x.poz]+vecin->cost)
{
dist[vecin->poz]=dist[x.poz]+vecin->cost;
H.insert(H.begin(),make_pair(dist[vecin->poz],vecin->poz));
}
}
}
for(int i=2;i<=N;i++)
out<<(dist[i]==INF ? 0:dist[i])<<" ";
return 0;
}