제출 #714770

#제출 시각아이디문제언어결과실행 시간메모리
714770aykhnStranded Far From Home (BOI22_island)C++14
10 / 100
309 ms644 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; #define OPT ios_base::sync_with_stdio(0); \ cin.tie(0); \ cout.tie(0) #define pii pair<int,int> #define pll pair<ll,ll> #define endl "\n" #define all(v) v.begin(), v.end() #define mpr make_pair #define pb push_back #define ts to_string #define fi first #define se second #define inf 0x3F3F3F3F #define bpc __builtin_popcount #define print(v) for(int i = 0; i < v.size(); i++) \ cout << v[i] << " "; \ cout<<endl; /* int ternarySearch(int l, int r, int key, int ar[]) { if (r >= l) { int mid1 = l + (r - l) / 3; int mid2 = r - (r - l) / 3; if (ar[mid1] == key) { return mid1; } if (ar[mid2] == key) { return mid2; } if (key < ar[mid1]) { return ternarySearch(l, mid1 - 1, key, ar); } else if (key > ar[mid2]) { return ternarySearch(mid2 + 1, r, key, ar); } else { return ternarySearch(mid1 + 1, mid2 - 1, key, ar); } } return -1; } */ struct DSU { vector<int> e; void init(int n) { e.assign(n, -1); } int get(int x) { if (e[x] < 0) return x; return e[x] = get(e[x]); } bool together(int a, int b) { return get(a) == get(b); } int s(int x) { return -e[get(x)]; } bool unite(int x, int y) { x = get(x); y = get(y); if (x == y) return false; if (e[x] > e[y]) swap(x, y); e[x] += e[y]; e[y] = x; return true; } }; vector<ll> v(2001); vector<vector<ll>> adj(2001); bool dijkstra(int a) { priority_queue<pii, vector<pii>, greater<pii>> pq; pq.push({0, a}); ll cnt = v[a]; vector<bool> used(2001); bool flag = true; while (!pq.empty()) { int w = pq.top().fi; int from = pq.top().se; used[from] = true; pq.pop(); if (w <= cnt) { cnt += w; for (int i = 0; i < adj[from].size(); i++) { if (!used[adj[from][i]]) { pq.push({v[adj[from][i]], adj[from][i]}); } } } else { flag = false; break; } } return flag; } int main() { ll n, m; cin >> n >> m; for (int i = 1; i <= n; i++) { cin >> v[i]; } while (m--) { ll u, v; cin >> u >> v; adj[u].pb(v); adj[v].pb(u); } string s; for (int i = 1; i <= n; i++) { if (dijkstra(i)) { s.pb('1'); } else { s.pb('0'); } } cout << s << endl; }

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

island.cpp: In function 'bool dijkstra(int)':
island.cpp:114:31: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  114 |             for (int i = 0; i < adj[from].size(); i++)
      |                             ~~^~~~~~~~~~~~~~~~~~
#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...