# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
767810 | 2023-06-27T07:50:51 Z | OrazB | 열대 식물원 (Tropical Garden) (IOI11_garden) | C++14 | 0 ms | 0 KB |
#include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> #include <functional> #include "garden.h" #include "gardenlib.h" using namespace __gnu_pbds; using namespace std; typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> ordered_set; //Dijkstra->set //set.find_by_order(x) x-position value //set.order_of_key(x) number of strictly less elements don't need *set.?? #define N 100005 #define wr cout << "Continue debugging\n"; #define all(x) (x).begin(), (x).end() #define ll long long int #define pii pair <int, int> #define pb push_back #define ff first #define ss second vector<pii> E[N]; void dfs(int nd, int pr, int &c, int p, int k, int&ans){ if (c > k) return; if (nd == p and c == k){ans++;return;} c++; if (E[nd][0].ff != pr) dfs(E[nd][0].ss, E[nd][0].ff, c, p, k, ans); else dfs(E[nd][1].ss, E[nd][1].ff, c, p, k, ans); } void count_routes(int n, int m, int p, int R[][2], int q, int G[]){ p++; for (int i = 0; i < m; i++){ E[R[i][0]+1].pb({i, R[i][1]+1}); E[R[i][1]+1].pb({i, R[i][0]+1}); } for (int i = 1; i <= n; i++) sort(all(E[i])); int ans = 0; for (int i = 1; i <= n; i++){ int c = 0; dfs(i, c, p, G[0], ans); } answer(ans); // return ans; } // int main () // { // ios::sync_with_stdio(false); // cin.tie(0); // int n, m, p, q; // cin >> n >> m >> p >> q; // vector<vector<int>> r(m, vector<int>(2)); // vector<int> k(q); // for (int i = 0; i < m; i++) cin >> r[i][0] >> r[i][1]; // for (int i = 0; i < q; i++) cin >> k[i]; // cout << count_routes(n,m,p,r,q,k); // }