Advertisement
Guest User

Untitled

a guest
Oct 22nd, 2014
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.64 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <vector>
  4.  
  5. #define INF 1E+7
  6.  
  7. using namespace std;
  8.  
  9. int main()
  10. {
  11.     vector<vector<int>> g;
  12.     vector<int> d, p, a;
  13.     int n;
  14.     int i, j;
  15.     int u, v, w;
  16.  
  17.     freopen("negcycle.in", "r", stdin);
  18.     freopen("negcycle.out", "w", stdout);
  19.  
  20.     cin >> n;
  21.     g.resize(n);
  22.     d.assign(n, INF);
  23.     p.assign(n, -1);
  24.  
  25.     for (i = 0; i < n; i++) {
  26.         for (j = 0; j < n; j++) {
  27.             scanf("%d", &w);
  28.             g[i].push_back(w);
  29.         }
  30.     }
  31.     d[0] = 0;
  32.     for (i = 1; i < n; i++) {
  33.         for (u = 0; u < n; u++) {
  34.             for (v = 0; v < n; v++) {
  35.                 if (d[v] > d[u] + g[u][v]) {
  36.                     d[v] = d[u] + g[u][v];
  37.                     p[v] = u;
  38.                 }
  39.             }
  40.         }
  41.     }
  42.  
  43.     for (u = 0; u < n; u++) {
  44.         for (v = 0; v < n; v++) {
  45.             if (d[v] > d[u] + g[u][v]) {
  46.                 a.push_back(v);
  47.                 if (p[v] == -1) {
  48.                     cout << "YES" << endl;
  49.                     cout << 2 << endl;
  50.                     cout << v + 1 << " " << v + 1;
  51.                     return 0;
  52.                 }
  53.                 u = p[v];
  54.                 while (u != v) {
  55.                     a.push_back(u);
  56.                     u = p[u];
  57.                 }
  58.                 a.push_back(u);
  59.  
  60.                 cout << "YES" << endl;
  61.                 cout << a.size() << endl;
  62.                 for (i = a.size() - 1; i >= 0; i--) {
  63.                     printf("%d ", a[i] + 1);
  64.                 }
  65.                 return 0;
  66.             }
  67.         }
  68.     }
  69.  
  70.     cout << "NO";
  71.     return 0;
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement