Pagini recente » Cod sursa (job #2461638) | Cod sursa (job #2958181) | Cod sursa (job #2144245) | Cod sursa (job #1961235) | Cod sursa (job #2207587)
#include <fstream>
#include <vector>
#include <queue>
#define INF 2000000000
using namespace std;
struct muchie{
int nod, cost;
};
struct stare{
int nod, cost;
bool operator <(const stare &s) const
{
return cost>s.cost;
}
};
int n,m;
int d[50003];
vector<muchie>L[50003];
priority_queue<stare>q;
void Citire()
{
int i,x;
muchie w;
ifstream fin("dijkstra.in");
fin>>n>>m;
for(i=1;i<=m;++i)
{
fin>>x>>w.nod>>w.cost;
L[x].push_back(w);
}
fin.close();
}
void Dijkstra()
{
int x,y,c;
unsigned int ui;
muchie w;
stare st;
st.nod = 1;
st.cost = 0;
q.push(st);
while(!q.empty())
{
st = q.top();
x = st.nod;
q.pop();
for(ui=0;ui<L[x].size();++ui)
{
w = L[x][ui];
y = w.nod;
c = w.cost;
if((y!=x && d[y]==0) || d[y] > d[x] + c /* && !viz[y] */)
{
d[y] = d[x] + c;
st.nod = y;
st.cost = d[y];
q.push(st);
}
}
}
}
void Afisare()
{
int i;
ofstream fout("dijkstra.out");
for(i=2;i<=n;++i)
fout<<d[i]<<" ";
fout<<"\n";
fout.close();
}
int main()
{
Citire();
Dijkstra();
Afisare();
return 0;
}