Pagini recente » Cod sursa (job #305983) | Monitorul de evaluare | Cod sursa (job #1389475) | Cod sursa (job #849550) | Cod sursa (job #3325316)
#include <fstream>
#include <queue>
#define INF 99999999
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
int i,n,m,nc,p,x,y,c,cost,vecin,d[250001];
bool incoada[250001];
struct mucie{int v,c;}z,zn;
vector <mucie> b[250001];
struct comparare{
bool operator()(int x,int y)
{
return d[x]>d[y];
}
};
priority_queue <int , vector <int> ,comparare > q;
int main()
{
f>>n>>m;
for(i=1;i<=m;++i)
{
f>>x>>y>>c;
z.v=y;
z.c=c;
b[x].push_back(z);
z.v=x;
b[y].push_back(z);
}
for(i=1;i<=n;++i)
d[i]=INF;
d[1]=0;
q.push(1);
incoada[1]=true;
while(!q.empty())
{
nc=q.top();
q.pop();
incoada[nc]=false;
for(i=0;i<b[nc].size();++i)
{
vecin=b[nc][i].v;
cost=b[nc][i].c;
if(d[vecin]>d[nc]+cost)
{
d[vecin]=d[nc]+cost;
if(!incoada[vecin])
q.push(vecin),incoada[vecin]=true;
}
}
}
for(i=2;i<=n;++i)
if(d[i]==INF)
g<<"0"<<' ';
else
g<<d[i]<<' ';
return 0;
}