제출 #25903

#제출 시각아이디문제언어결과실행 시간메모리
25903model_codeTales of seafaring (POI13_mor)C++11
50 / 100
3000 ms20088 KiB
/************************************************************************* * * * XX Olimpiada Informatyczna * * * * Zadanie: Morskie opowiesci * * Autor: Mateusz Baranowski * * Zlozonosc czasowa: O(k(n + m)) * * Zlozonosc pamieciowa: O(n + m + k) * * Opis: Rozwiazanie wolne * * Sprawdza kazda opowiesc osobno * * * *************************************************************************/ #include <cstdio> #include <vector> #include <algorithm> using namespace std; #define MAX_N 10000 #define MAX_M 10000 #define MAX_K 1000000 #define INFTY 1000000000 typedef pair< pair<int, int>, int> przygoda_t; int n, m, k; vector<int> szlaki[MAX_N + 1]; vector<przygoda_t> przygody; void wczytaj_dane() { scanf("%d %d %d", &n, &m, &k); int u, v, len; for (int i = 0; i < m; ++i) { scanf("%d %d", &u, &v); szlaki[u].push_back(v); szlaki[v].push_back(u); } for (int i = 0; i < k; ++i) { scanf("%d %d %d", &u, &v, &len); przygody.push_back(make_pair(make_pair(u, v), len)); } } bool sprawdz_przygode(przygoda_t przygoda) { int a = przygoda.first.first; int b = przygoda.first.second; int c = przygoda.second; int odl[2][2 * MAX_N + 1]; for (int l = 0; l <= n; ++l) { odl[0][l] = INFTY; odl[1][l] = INFTY; } int pocz[2], kon[2], q[2][MAX_N]; pocz[0] = 0; kon[0] = 1; pocz[1] = 0; kon[1] = 0; q[0][0] = a; int k = 0; int d = 1; while (pocz[k] < kon[k] && odl[c%2][b] == INFTY) { int u = q[k][pocz[k]++]; vector<int>::const_iterator it; for (it = szlaki[u].begin(); it != szlaki[u].end(); ++it) { if (odl[1 - k][*it] == INFTY) { odl[1 - k][*it] = d; q[1 - k][kon[1 - k]++] = *it; } } if (pocz[k] == kon[k]) { k = 1 - k; ++d; } } return (odl[c%2][b] <= c); } int main() { wczytaj_dane(); for (int i = 0; i < k; ++i) { if (sprawdz_przygode(przygody[i])) { printf("TAK\n"); } else { printf("NIE\n"); } } return 0; }

컴파일 시 표준 에러 (stderr) 메시지

mor.cpp: In function 'void wczytaj_dane()':
mor.cpp:31:34: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d %d %d", &n, &m, &k);
                                  ^
mor.cpp:34:31: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d %d", &u, &v);
                               ^
mor.cpp:39:40: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d %d %d", &u, &v, &len);
                                        ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...