Pagini recente » Cod sursa (job #2920365) | Cod sursa (job #882015) | Cod sursa (job #368394) | Cod sursa (job #1089775) | Cod sursa (job #1044107)
#include <fstream>
#include <utility>
#include <queue>
#include <bitset>
#include <vector>
using namespace std;
unsigned short int et[50005];
unsigned short int gaseste(unsigned short int x)
{
if(et[x]!=x)
et[x]=gaseste(et[x]);
return et[x];
}
void uneste(unsigned short int x,unsigned short int y)
{
x=gaseste(x);
y=gaseste(y);
et[x]=y;
}
int main()
{
ifstream cin("camionas.in");
ofstream cout("camionas.out");
unsigned short n,x,y;
int m=0,z,g,i;
cin>>n>>m>>g;
for(i=1;i<=n;i++)
et[i]=i;
for(i=0;i<m;i++)
{
cin>>x>>y>>z;
if(z>=g)
uneste(x,y);
}
unsigned short int d[50005];
bitset<50005> viz;
for(i=1;i<=n;i++)
{
gaseste(i);
//cout<<i<<' '<<et[i]<<endl;
viz[i]=0;
d[i]=0;
}
cin.close();
cin.open("camionas.in");
cin>>n>>m>>g;
vector<unsigned short int> graf[50005];
vector<unsigned short int>::iterator it;
queue<unsigned short int> coada;
while(!coada.empty())
coada.pop();
for(i=1;i<=n;i++)
graf[i].clear();
for(i=0;i<m;i++)
{
cin>>x>>y>>z;
if(z<g)
{
graf[et[x]].push_back(et[y]);
graf[et[y]].push_back(et[x]);
}
}
coada.push(et[1]);
viz[et[1]]=1;
d[et[1]]=0;
if(et[n]==et[1])
{
cout<<"0\n";
cin.close();
cout.close();
return 0;
}
while(!coada.empty())
{
y=coada.front();
coada.pop();
for(it=graf[y].begin();it!=graf[y].end();it++)
if(!viz[*it])
{
viz[*it]=1;
d[*it]=d[y]+1;
if(*it==et[n])
{
cout<<d[*it]<<'\n';
cin.close();
cout.close();
return 0;
}
coada.push(*it);
}
}
return 0;
}