Pagini recente » Cod sursa (job #632872) | Cod sursa (job #843057) | Cod sursa (job #639551) | Cod sursa (job #3175813) | Cod sursa (job #741096)
Cod sursa(job #741096)
#include<fstream>
#include<vector>
#include<cmath>
#include<cstring>
#include<queue>
using namespace std;
int n,m,X,Y,kmax;
struct Muchie{int nod,d;};
vector <int> G[250100],v[1010];
Muchie M[500100];
bool viz[250100];
inline void Citire()
{
int i,poz,ns,x,y,d;
char s[30];
ifstream fin("pscnv.in");
//fin>>n>>m>>X>>Y;
fin.getline(s,30);
ns=strlen(s);
poz=0;
while(s[poz]!=' ')
{
n=n*10+s[poz]-'0';
poz++;
}
poz++;
while(s[poz]!=' ')
{
m=m*10+s[poz]-'0';
poz++;
}
poz++;
while(s[poz]!=' ')
{
X=X*10+s[poz]-'0';
poz++;
}
poz++;
while(poz<ns)
{
Y=Y*10+s[poz]-'0';
poz++;
}
//
for(i=1;i<=m;i++)
{
//fin>>M[i].nod1>>M[i].nod2>>M[i].d;
fin.getline(s,30);
ns=strlen(s);
poz=0;
x=0;
while(s[poz]!=' ')
{
x=x*10+s[poz]-'0';
poz++;
}
poz++;
y=0;
while(s[poz]!=' ')
{
y=y*10+s[poz]-'0';
poz++;
}
poz++;
d=0;
while(poz<ns)
{
d=d*10+s[poz]-'0';
poz++;
}
//
M[i].nod=y;
M[i].d=d;
G[x].push_back(i);
kmax=max(kmax,d);
}
fin.close();
}
inline void Rezolvare()
{
ofstream fout("pscnv.out");
int i,x,nod,d;
vector <int>::iterator it,jt;
v[0].push_back(X);
for(i=0;i<=kmax;i++)
{
for(it=v[i].begin();it!=v[i].end();it++)
{
if(*it==Y)
{
fout<<i<<"\n";
fout.close();
return;
}
if(!viz[*it])
{
viz[*it]=true;
x=*it;
for(jt=G[x].begin();jt!=G[x].end();jt++)
{
nod=M[*jt].nod;
d=M[*jt].d;
v[max(i,d)].push_back(nod);
}
}
}
}
}
int main()
{
Citire();
Rezolvare();
return 0;
}