Pagini recente » Cod sursa (job #964446) | Cod sursa (job #637107) | Cod sursa (job #2356345) | Cod sursa (job #256120) | Cod sursa (job #1739119)
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.LinkedList;
public class Main {
static ArrayList<Integer>[] vx = (ArrayList<Integer>[]) new ArrayList[50009];
static ArrayList<Integer>[] vy = (ArrayList<Integer>[]) new ArrayList[50009];
static LinkedList<Integer> q = new LinkedList<Integer>();
static int[] d = new int[50009];
static int[] f = new int[50009];
static int n, m, t, initial_point;
static final int INF = 2147483647;
public static boolean bell(){
d[initial_point] = 0;
q.add(initial_point);
while(q.size() > 0){
int k = q.remove();
for (int i = 0; i < vx[k].size(); ++i)
if (d[vx[k].get(i)] > d[k] + vy[k].get(i)){
d[vx[k].get(i)] = d[k] + vy[k].get(i);
q.add(vx[k].get(i));
}
}
for (int i = 1; i <= n; ++i)
if (d[i] != f[i])
return false;
return true;
}
public static void main(String[] args) {
for (int i = 0; i < 50009; ++i){
vx[i] = new ArrayList<Integer>();
vy[i] = new ArrayList<Integer>();
}
try{
BufferedReader bf = new BufferedReader(new FileReader("distante.in"));
OutputStream fout = new BufferedOutputStream (new FileOutputStream("distante.out"));
String tmp[] = bf.readLine().split(" ");
t = Integer.parseInt(tmp[0]);
while(t-- > 0){
for (int i = 0; i < 50009; ++i){
vx[i].clear();
vy[i].clear();
}
tmp = bf.readLine().split(" ");
n = Integer.parseInt(tmp[0]);
m = Integer.parseInt(tmp[1]);
initial_point = Integer.parseInt(tmp[2]);
tmp = bf.readLine().split(" ");
for (int i = 0; i < n; ++i)
f[i+1] = Integer.parseInt(tmp[i]);
for (int i = 1; i <= m; ++i){
int x, y, z;
tmp = bf.readLine().split(" ");
x = Integer.parseInt(tmp[0]);
y = Integer.parseInt(tmp[1]);
z = Integer.parseInt(tmp[2]);
vx[x].add(y);
vy[x].add(z);
vx[y].add(x);
vy[y].add(z);
}
for (int i = 0; i < 50009; ++i)
d[i] = INF;
if (bell())
fout.write(("DA\r\n").getBytes());
else fout.write(("NU\r\n").getBytes());
}
bf.close();
fout.flush();
fout.close();
}catch(Exception ex){
System.out.println("ERROR LIKELY NO FILE");
}
}
}