Cod sursa(job #7069)

Utilizator cretuMusina Rares cretu Data 21 ianuarie 2007 12:17:42
Problema Radiatie Scor 0
Compilator cpp Status done
Runda preONI 2007, Runda 1, Clasele 11-12 Marime 1.01 kb
#include <fstream>
#define INF 99999999
#define MAX 15001

using namespace std;

int d[MAX][MAX];
int m, n, K;

int maxim(int x, int y);
void Solve();

int main()
{
    int i, j, v1, v2, c;
    ifstream fin("radiatie.in");;
    fin >> n >> m >> K;
    for (i = 1; i <= n; i++)
        for (j = i; j <= n; j++)
            d[i][j] = d[j][i] = INF;
    for (i = 1; i <= m; i++)    
    {
        fin >> v1 >> v2 >> c;    
        d[v1][v2] = d[v2][v1] = c;
    }
    
    Solve();
    
    ofstream fout("radiatie.out");
    
    for (i = 1; i <= K; i++)
    {
        fin >> v1 >> v2;
        fout << d[v1][v2] << "\n";    
    }
    fin.close();
    fout.close();
}

void Solve()
{
     int i, j, k;
     for (k = 1; k <= n; k++)
         for (i = 1; i <= n; i++)
             for (j = 1; j <= n; j++)
                 if (d[i][j] > maxim(d[i][k], d[k][j]))
                     d[i][j] = maxim(d[i][k], d[k][j]);
         
}

int maxim(int x, int y)
{
    return x > y ? x : y;    
}