Submission #9272

#TimeUsernameProblemLanguageResultExecution timeMemory
9272effservYour life (kriii2_Y)C++98
4 / 4
80 ms6852 KiB
/* 문제 */ // 2014. #include <cstdio> #include <cmath> #include <algorithm> #include <vector> #include <queue> #include <functional> #include <cstring> #include <string> #include <map> using namespace std; #define maxS 100001 vector <int> x[maxS]; queue <int> qu; int N, M , ans = 2100000000, st; bool visited[maxS]; int cmp1(int i, int j) { return i > j; } void bfs() { qu.push(1); st = 1; int m = 0; while (!qu.empty()) { int tmp = qu.front(); qu.pop(); if (visited[tmp] == true) continue; visited[tmp] = true; if (st == tmp) { m++; st = -1; } int sz = x[tmp].size(); for (int i = 0; i < sz; i++) { if (x[tmp][i] == N) { ans = m; return; } if (visited[x[tmp][i]] == false) { if (st == -1) st = x[tmp][i]; qu.push(x[tmp][i]); } } } return; } int main() { scanf("%d%d", &N, &M); for (int i = 0; i < M; i++) { int n, m; scanf("%d%d", &n, &m); x[n].push_back(m); } for (int i = 1; i <= N; i++) sort(x[i].begin(), x[i].end(),cmp1); bfs(); if (ans == 2100000000) printf("-1\n"); else printf("%d\n", ans); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...