Pagini recente » Cod sursa (job #2462764) | Cod sursa (job #957129) | Cod sursa (job #1561133) | Cod sursa (job #2740569) | Cod sursa (job #2556089)
#include <bits/stdc++.h>
using namespace std;
#define inf 1000000007
ifstream fin("dijkstra.in");ofstream fout("dijkstra.out");
int viz[100005],t[100005],n,start,x,y,co,d[100005],m;
vector<pair<int,int> >a[250005];
vector<pair<int,int> >::iterator it;
pair<int,int>var;
pair<int,int>minn;
priority_queue<pair<int,int>,vector<pair<int,int> >,greater<pair<int,int> > >q;
void citire()
{
start=1;
fin>>n>>m;
while(fin>>x>>y>>co)
{
var.first=y;var.second=co;
a[x].push_back(var);
}
for(int i=1;i<=n;i++)
{
d[i]=inf;
}
d[start]=0;
}
int main()
{
citire();
for(it=a[start].begin();it<a[start].end();it++)
{
d[it->first]=it->second;
var.first=d[it->second];
var.second=it->first;
q.push(var);
}
viz[start]=1;
while(!q.empty())
{
minn=q.top();
q.pop();
if(t[minn.second]==0)
t[minn.second]=start;
if(minn.first!=d[minn.second])
{
viz[minn.second]=1;
for(it=a[minn.second].begin(); it<a[minn.second].end(); it++)
{
if(d[it->first]>d[minn.second]+it->second)
{
d[it->first]=d[minn.second]+it->second;
t[it->first]=minn.second;
var.first=d[it->first];
var.second=it->first;
q.push(var);
}
}
}
}
for(int i=2;i<=n;i++)
{
if(d[i]==inf)
fout<<"0"<<" ";
else
fout<<d[i]<<" ";
}
fin.close();fout.close();return 0;
}