Pagini recente » Cod sursa (job #1776343) | Cod sursa (job #2045222) | Cod sursa (job #362234) | Cod sursa (job #3147155) | Cod sursa (job #401631)
Cod sursa(job #401631)
// de facto este Bellman-Ford
#include<iostream>
#include<fstream>
#include<vector>
#include<queue>
using namespace std;
#define foreach(v) for(typeof (v).begin() it=(v).begin();it!=(v).end();it++)
#define oo 0x3f3f3f3f
struct nod_{
int nod,lg;
};
vector<nod_> G[50005];
queue<int> q;
vector<int> dist(50005);
vector<int> isinq(50005);
int m,n;
inline void citire()
{int i,x,y,z;
ifstream fin("dijkstra.in");
fin>>n>>m;
for(i=1;i<=m;i++)
{fin>>x>>y>>z;
G[x].push_back((nod_){y,z});
G[y].push_back((nod_){x,z});
}
fin.close();
}
int main()
{int i,u;
citire();
q.push(1);
dist[1]=0;
isinq[1]=1;
for(i=2;i<=n;i++)
dist[i]=oo;
while(!q.empty())
{
u=q.front();
q.pop();
isinq[u]=0;
foreach(G[u])
{
if(dist[u]+it->lg<dist[(*it).nod])
{dist[it->nod]=dist[u]+it->lg;
if(isinq[it->nod]==0)
{q.push(it->nod);
isinq[it->nod]=1;
}
}
}
}
ofstream fout("dijkstra.out");
for(i=2;i<=n;i++)
fout<<dist[i]<<" ";
fout.close();
return 0;
}