Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.*;
- import java.util.*;
- public class t180 {
- static final int INF = Integer.MAX_VALUE / 2;
- static int[][] arr;
- public static void main(String[] args) throws IOException {
- BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
- StringTokenizer st = new StringTokenizer(in.readLine());
- int n = Integer.parseInt(st.nextToken());
- int edges = 0;
- arr = new int[n][n];
- for (int i = 0; i < n; i++) {
- st = new StringTokenizer(in.readLine());
- for (int j = 0; j < n; j++) {
- arr[i][j] = Integer.parseInt(st.nextToken());
- if (arr[i][j] != 100000) {
- edges++;
- }
- }
- }
- Edge[] ed = new Edge[edges];
- int[] distance = new int[n];
- Arrays.fill(distance, INF);
- int[] prev = new int[n];
- Arrays.fill(prev, -1);
- int index = 0;
- for (int i = 0; i < n; i++) {
- for (int j = 0; j < n; j++) {
- if (arr[i][j] != 100000) {
- ed[index] = new Edge(i, j, arr[i][j]);
- index++;
- }
- }
- }
- distance[0] = 0;
- int t = 0;
- for (int i = 0; i < n; i++) {
- t = -1;
- for (int j = 0; j < edges; j++) {
- if (distance[ed[j].to] > distance[ed[j].from] + ed[j].weight) {
- distance[ed[j].to] = Math.max(-INF, distance[ed[j].from] + ed[j].weight);
- prev[ed[j].to] = ed[j].from;
- t = ed[j].to;
- }
- }
- }
- int[] answer = new int[n + 1];
- index = 0;
- ArrayList<Integer> ans = new ArrayList<Integer>();
- if (t != -1) {
- for (int i = 0; i < n; i++) {
- t = prev[t];
- }
- for (int i = t; 1 < 2; i = prev[i]) {
- answer[index] = i;
- index++;
- ans.add(i);
- if (i == t && index > 1) {
- break;
- }
- }
- System.out.println("YES");
- System.out.println(index);
- for (int i = 0; i < index; i++)
- System.out.print((answer[index-1-i]+1) + " ");
- } else
- System.out.println("NO");
- in.close();
- }
- static class Edge {
- int from;
- int to;
- int weight;
- public Edge(int u, int v, int w) {
- this.from = u;
- this.to = v;
- this.weight = w;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement