Pagini recente » Cod sursa (job #2951697) | Cod sursa (job #1724783) | Cod sursa (job #2945382) | Cod sursa (job #1818439) | Cod sursa (job #1725885)
#include <fstream>
#include <vector>
#include <queue>
#define MMAX 250001
#define NMAX 50001
#define mp make_pair
#define pb push_back
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
int x,y,z,n,m,i,dist[NMAX];
vector <pair<int, int> > G[NMAX];
int comp (int x,int y)
{
return x>y;
}
void Dijkstra (int nod)
{
priority_queue < pair <int,int>, vector < pair <int,int> >, greater < pair<int, int> > > Q;
dist[nod]=0;
Q.push(mp(dist[nod],nod));
while(!Q.empty())
{
int x=Q.top().second;
Q.pop();
for (int i=0; i<G[x].size(); i++)
{
int v=G[x][i].first, c=G[x][i].second;
if (dist[v] > dist[x] + c)
{
dist[v]=dist[x]+c;
Q.push(mp(dist[v],v));
}
}
}
}
int main()
{
f>>n>>m;
for(i=1;i<=m;i++)
{
f>>x>>y>>z;
G[x].pb(mp(y,z));
}
for(i=1;i<=n;i++) dist[i]=1<<30;
Dijkstra(1);
for(i=2;i<=n;i++)
{
if(dist[i]==1<<30) g<<0<<' ';
else g<<dist[i]<<' ';
}
return 0;
}