Pagini recente » Cod sursa (job #2574355) | Cod sursa (job #147036) | Cod sursa (job #797044) | Cod sursa (job #467071) | Cod sursa (job #2854600)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
const int MAXN = 5e4;
const int INF = 1e7;
ifstream fin( "camionas.in" );
ofstream fout( "camionas.out" );
struct Edge{
int node;
int cost;
};
vector <Edge> graph[MAXN+1];
queue <int> bfQueue;
int dist[MAXN+1];
int counter[MAXN+1];
int n;
void bf( int node ) {
int i;
for( i = 0; i < n; i++ )
dist[i] = INF;
bfQueue.push( node );
counter[node]++;
dist[node] = 0;
while( !bfQueue.empty() ) {
int qfront = bfQueue.front();
for( auto edge: graph[qfront] ) {
if( dist[qfront] + edge.cost < dist[edge.node] ) {
dist[edge.node] = dist[qfront] + edge.cost;
if( counter[edge.node] == 0 ) {
counter[edge.node]++;
bfQueue.push( edge.node );
}
}
}
counter[qfront]--;
bfQueue.pop();
}
}
int main() {
int m, g, i, x, y, cost;
fin >> n >> m >> g;
for( i = 0; i < m; i++ ) {
fin >> x >> y >> cost;
x--;
y--;
if( cost >= g )
cost = 0;
else
cost = 1;
graph[x].push_back( { y, cost } );
graph[y].push_back( { x, cost } );
}
bf( 0 );
fout << dist[n-1];
return 0;
}