Pagini recente » Cod sursa (job #378715) | Cod sursa (job #281859) | Cod sursa (job #1012008) | Cod sursa (job #1521523) | Cod sursa (job #7190)
Cod sursa(job #7190)
#include<iostream.h>
#include<fstream.h>
#include<values.h>
fstream f("radiatie.in",ios::in);
fstream g("radiatie.out",ios::out);
int n,m,kk,as,ev,k,x[300],max;
float v[10][7]={0};
void init()
{ x[k]=-1;
}
int succesor()
{ if (x[k]<n&&k<=n)
{x[k]++;return 1;}
else
return 0;
}
int valid()
{ if(k<=n)
{ if (v[x[k-1]][x[k]]==0)
return 0;
int i;
for(i=1;i<k;i++)
if(x[i]==x[k])
return 0;
return 1;
}
else
return 0;
}
int solutie(int b,int &max)
{ max=0;
if (x[k]==b)
{ for(int i=2;i<=k;i++)
if(v[x[i-1]][x[i]]>max)
max=v[x[i-1]][x[i]];
return 1;
}
else return 0;
}
void back(int a,int b)
{ k=2;
x[1]=a;
init();
int min=MAXINT;
while(k>1)
{ do
{ as=succesor();
if (as)
ev=valid();
}
while(as&&!ev);
if(as)
if(solutie(b,max))
{if (min>max)
min=max;}
else
{k++;init();}
else
k--;
}
g<<min<<endl;
}
struct nod{int a;int b;};
nod d[300];
int main()
{int i,a,b,c;
f>>n>>m>>kk;
for(i=1;i<=m;i++)
{ f>>a>>b>>c;
v[a][b]=v[b][a]=c;
}
for(i=1;i<=kk;i++)
f>>d[i].a>>d[i].b;
for(i=1;i<=kk;i++)
back(d[i].a,d[i].b);
f.close();
g.close();
return 0;}