Pagini recente » Cod sursa (job #382033) | Cod sursa (job #2643774) | Cod sursa (job #691076) | Cod sursa (job #1013728) | Cod sursa (job #1326890)
#include<fstream>
#include<vector>
#include<queue>
using namespace std ;
struct nod
{
int v, c;
};
struct Coord {
int v, cost;
bool operator < (const Coord& e) const
{
return cost > e.cost;
}
};
vector<nod> L[50002];
int n, d[50002];
bool viz[50002];
priority_queue <Coord> q;
void Citire()
{
unsigned int i, x, y, m, G, g, cost;
nod w;
ifstream fin("camionas.in");
fin >> n >> m >> G;
for (i = 1; i <= m; i++)
{
fin >> x >> y >> g;
if (g < G) cost = 1;
else cost = 0;
w.c = cost;
w.v = y;
L[x].push_back(w);
w.v = x;
L[y].push_back(w);
}
fin.close();
}
void BellmanFord()
{
int i;
unsigned int j, dimm;
nod w;
Coord w1, w2;
for (i = 2; i <= n; i++)
d[i] = 100000000;
d[1] = 0;
viz[1] = true;
w1.cost = 0;
w1.v = 1;
q.push(w1);
while (!q.empty())
{
w1 = q.top();
q.pop();
viz[w1.v] = false;
dimm = L[w1.v].size();
for (j = 0; j < dimm; j++)
{
w = L[w1.v][j];
i = w.v;
//c = w.c;
if (d[i] > d[w1.v] + w.c)
{
w2.cost = d[i] = d[w1.v] + w.c;
w2.v = i;
if (!viz[i])
{
q.push(w2);
viz[i] = true;
}
}
}
}
}
void Afisare()
{
ofstream fout("camionas.out");
//for (int i = 1; i <= n; i++)
// fout << d[i] << " ";
//fout << "\n";
fout << d[n] << "\n";
fout.close();
}
int main()
{
Citire();
BellmanFord();
Afisare();
return 0;
}