Cod sursa(job #2075167)

Utilizator cicero23catalin viorel cicero23 Data 25 noiembrie 2017 11:41:05
Problema Paduri de multimi disjuncte Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include <fstream>
#include <bits/stdc++.h>
using namespace std;int nmax=50001,inf=1e9;ifstream f("camionas.in");ofstream g("camionas.out");vector<pair<int,int> > v[50001];priority_queue<pair<int,int>,vector<pair<int,int> >,greater<pair<int,int> > >h;int d[50001],n,m,a,b,c,nod,G,w[50001];int main(){int i;f>>n>>m>>G;for(i=1; i<=m; i++){f>>a>>b>>c;if(c>=G) c=1;else c=50001;v[a].push_back(make_pair(c,b));v[b].push_back(make_pair(c,a));}for(i=1; i<=n; i++)d[i]=inf;d[1]=0;h.push(make_pair(0,1));while(!h.empty()){nod=h.top().second;h.pop();for(i=0; i<v[nod].size(); i++){if(d[nod]+v[nod][i].first<d[v[nod][i].second]){w[v[nod][i].second]++;d[v[nod][i].second]=d[nod]+v[nod][i].first;h.push(make_pair(d[v[nod][i].second],v[nod][i].second));}}}g<<(d[n]-(w[n]+2))/50000;return 0;}