Pagini recente » Cod sursa (job #1143779) | Cod sursa (job #490015) | Cod sursa (job #2809519) | Cod sursa (job #2692885) | Cod sursa (job #404969)
Cod sursa(job #404969)
#include<fstream>
#include<vector>
#include<queue>
using namespace std;
#define pb push_back
#define nmax 36005
#define inf 1<<30
vector<int> g[nmax],c[nmax];
int fort[nmax],d[nmax];
int n,m,k;
void citire ()
{
ifstream fin("dijkstra.in");
fin>>n>>m;
int i,a,b,cost;
//for(i=1;i<=k;i++)
//fin>>fort[i];
for(i=1;i<=m;i++)
{
fin>>a>>b>>cost;
g[a].pb(b);
//g[b].pb(a);
c[a].pb(cost);
// c[b].pb(cost);
}
fin.close();
}
struct comp
{
bool operator() (int i,int j)
{
return d[i]>d[j];
}
};
void dijkstra (int nod)
{
int i,x;
priority_queue<int,vector<int>,comp> q;
q.push(nod);
for(i=1;i<=n;i++)
d[i]=inf;
d[nod]=0;
while(!q.empty())
{
x=q.top();
q.pop();
for(i=0;i<g[x].size();i++)
if(d[g[x][i]]>d[x]+c[x][i])
{
d[g[x][i]]=d[x]+c[x][i];
q.push(g[x][i]);
}
}
}
int main ()
{
citire ();
int i;
dijkstra(1);
ofstream fout("dijkstra.out");
for(i=2;i<=n;i++)
if(d[i]!=inf) fout<<d[i]<<' ';
else fout<<0;
fout.close();
return 0;
}