Pagini recente » Cod sursa (job #2222322) | Cod sursa (job #1968256) | Cod sursa (job #1889713) | Cod sursa (job #2675452) | Cod sursa (job #1788067)
#include <fstream>
#include <iomanip>
using namespace std;
ifstream f("radiatie.in");
ofstream g("radiatie.out");
int n,m,k,s[30001],t[30001],a[15001][15001];
void citire()
{
f>>n>>m>>k;
int v1,v2,c;
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)
if(i==j)
a[i][j]=0;
else
a[i][j]=1000000000;
for(int i=1;i<=m;++i)
f>>v1>>v2>>c,a[v1][v2]=c,a[v2][v1]=c;
}
int cauta_nod(int &nod)
{
int min1=1000000000;
for(int i=1;i<=n;++i)
if(s[i])
if(a[i][s[i]]<min1)
{
min1=a[i][s[i]];
nod=i;
}
return min1;
}
void actual(int nod)
{
for(int i=1;i<=n;++i)
if(s[i])
if(a[i][s[i]]>a[i][nod])
s[i]=nod;
}
int main()
{
citire();
for(int j=1;j<=k;++j)
{
int nod=0,cost=0,nr=1,x,y,v;
f>>x>>y;
v=x;s[v]=0;
for(int i=1;i<=n;++i)
{
t[i]=0;
s[i]=0;
if(i!=v)
s[i]=v;
}
do{
int min1=cauta_nod(nod);
t[nod]=s[nod];
cost+=min1;nr++;
s[nod]=0;
actual(nod);
}while(nod!=y);
int maxi=0;
for(int i=1;i<=n;++i)
if(t[i] && a[t[i]][i]>maxi)
maxi=a[t[i]][i];
g<<maxi;
if(j<k)
g<<'\n';
}
return 0;
}
/*
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
cout<<setw(10)<<a[i][j]<<" ";
cout<<endl;
}
*/