Nu aveti permisiuni pentru a descarca fisierul grader_test10.ok
Cod sursa(job #894076)
Utilizator | Data | 26 februarie 2013 19:34:06 | |
---|---|---|---|
Problema | Floyd-Warshall/Roy-Floyd | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.77 kb |
#include <fstream>
#define nmax 110
using namespace std;
int N,D[nmax][nmax];
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(i!=j && D[i][k] && D[k][j] && (D[i][j]>D[i][k]+D[k][j] || !D[i][j]) )
D[i][j]=D[i][k]+D[k][j];
}
void read() {
int i,j;
ifstream in("royfloyd.in");
in>>N;
for(i=1;i<=N;i++)
for(j=1;j<=N;j++)
in>>D[i][j];
in.close();
}
void write() {
int i,j;
ofstream out("royfloyd.out");
for(i=1;i<=N;i++)
for(j=1;j<=N;j++)
out<<D[i][j]<<(j==N?'\n':' ');
out.close();
}
int main() {
read();
solve();
write();
return 0;
}