Pagini recente » Cod sursa (job #2571802) | Cod sursa (job #2627173) | Cod sursa (job #2411373) | Cod sursa (job #671800) | Cod sursa (job #3165411)
#include <bits/stdc++.h>
#define NN 55
#define INF 5000000
using namespace std;
ifstream fin ("rfinv.in");
ofstream fout ("rfinv.out");
int t, n, m, a, b;
int v[NN][NN], w[NN][NN];
void reset()
{
for(int i = 1 ; i <= n ; i++)
{
for(int j = 1 ; j <= n ; j++)
{
v[i][j] = 0;
w[i][j] = 0;
}
}
}
void afis()
{
for(int i = 1 ; i <= n ; i++)
{
for(int j = 1 ; j <= n ; j++)
{
fout << v[i][j] << " ";
}
fout << '\n';
}
}
void test()
{
fin >> n >> m;
reset();
for(int i = 1 ; i <= m ; i++)
{
fin >> a >> b;
v[a][b] = -1;
v[b][a] = -1;
}
for(int i = 1 ; i <= n ; i++)
{
for(int j = 1 ; j <= n ; j++)
{
fin >> w[i][j];
if(v[i][j] == -1)
{
v[i][j] = w[i][j];
}
else if(i != j)
{
v[i][j] = INF;
}
}
}
//afis();
for(int k = 1 ; k <= n ; k++)
{
for(int i = 1 ; i <= n ; i++)
{
for(int j = 1 ; j <= n ; j++)
{
v[i][j] = min(v[i][j], v[i][k] + v[k][j]);
}
}
}
for(int i = 1 ; i <= n ; i++)
{
for(int j = 1 ; j <= n ; j++)
{
if(v[i][j] != w[i][j])
{
fout << "NU" << '\n';
return;
}
}
}
fout << "DA" << '\n';
}
int main()
{
fin >> t;
for(int i = 1 ; i <= t ; i++)
test();
return 0;
}