1 条题解
-
0
C++ :
#include <iostream> #include <cstdio> #include <cstring> #define foru(i, l, r) for (int i = l; i <= r; i ++) using namespace std; const int N = 510; int m, n, e[N][N], a[N]; bool vst[N]; void dijkstra() { vst[1] = true; foru (i, 2, n) { int t = 0; foru (j, 1, n) { if (!vst[j] && e[1][j] < e[1][t]) t = j; } vst[t] = true; foru (j, 1, n) { if (!vst[j]) e[1][j] = min(e[1][j], e[1][t]+e[t][j]); } } } int main() { scanf("%d%d\n", &m, &n); memset(e, 0x3f, sizeof(e)); while (m--) { int num = 0, cnt = 0; char ch; while (scanf("%c", &ch)) { if (ch>='0' && ch<='9') { num = num*10 + ch-'0'; } else { a[++cnt] = num; num = 0; if (ch == '\n') break; } } foru (i, 1, cnt) { foru (j, i+1, cnt) { e[a[i]][a[j]] = 1; } } } dijkstra(); if (e[1][n] == 0x3f3f3f3f) cout << "NO"; else cout << e[1][n] - 1; return 0; }
- 1
信息
- ID
- 1789
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者