Pagini recente » Cod sursa (job #1247418) | Cod sursa (job #2892444) | Cod sursa (job #1245630) | Cod sursa (job #1604843) | Cod sursa (job #1788056)
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
ifstream f("radiatie.in");
ofstream g("radiatie.out");
int n,m,k,s[30001],t[30001],pinf=1000000000,min1,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]=pinf;
for(int i=1;i<=m;i++)
f>>v1>>v2>>c,a[v1][v2]=c,a[v2][v1]=c;
}
int cauta_nod(int &nod)
{
min1=pinf;
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{
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<<endl;
}
return 0;
}
/*
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
cout<<setw(10)<<a[i][j]<<" ";
cout<<endl;
}
*/