Submission #431476

#TimeUsernameProblemLanguageResultExecution timeMemory
431476Mohammed_AtalahDuathlon (APIO18_duathlon)C++17
5 / 100
1097 ms187184 KiB
/////home/mohammed/.config/sublime-text-3/Packages/User /*input */ #include <bits/stdc++.h> #include <iostream> #include <vector> #include <string> #include <algorithm> #include <numeric> #include <math.h> #include <sstream> #include <iterator> #include <cstdlib> #include <unordered_map> #include <map> #include <list> #include <set> using namespace std; using bin = std::bitset<8>; #define endl ("\n") #define pi (3.141592653589) #define mod 1000000007 #define int int64_t #define float double #define ll long long #define pb push_back // #define mp make_pair #define ff first #define ss second #define all(c) c.begin(), c.end() #define min3(a, b, c) min({a,b,c}) #define max3(a, b, c) max({a,b,c}) #define min4(a, b, c, d) min({a,b,c,d}) #define max4(a, b, c, d) max({a,b,c,d}) #define rrep(i, n) for(int i=n-1;i>=0;i--) #define rep(i,n) for(int i=0;i<n;i++) #define fast ios_base::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr) #define ld long double #define scanArray(a,n) for(int i = 0; i < n; i++){cin >> a[i];} #define coutArray(a,n) for(int i = 0; i < n; i++){cout << a[i] << " ";};cout << endl; #define input(type, n) type n; cin>>n; struct debugger { template<typename T> debugger& operator , (const T& v) { cerr << v << " "; return *this; } } dbg; bool check_key(map<int, int> m, int key) { if (m.find(key) == m.end()) return false; return true; } vector<int> SieveOfEratosthenes(int n) { bool prime[n + 1]; memset(prime, true, sizeof(prime)); vector<int> res; for (int p = 2; p * p <= n; p++) { if (prime[p] == true) { for (int i = p * p; i <= n; i += p) prime[i] = false; } } for (int p = 2; p <= n; p++) if (prime[p]) res.push_back(p); //cout << p << " "; return res; } // function to convert decimal to binary bin decToBinary(int n) { // array to store binary number int binaryNum[32]; // counter for binary array int i = 0; while (n > 0) { // storing remainder in binary array binaryNum[i] = n % 2; n = n / 2; i++; } string x = ""; // printing binary array in reverse order for (int j = i - 1; j >= 0; j--) { x += to_string(binaryNum[j]); } bin result{x}; return result; } // for example: // bin result = decToBinary(2); // bin result2 = decToBinary(10); // bin z = result xor result2; // cout << z; // return 0; int convertBinaryToDecimal(long long n) { int decimalNumber = 0, i = 0, remainder; while (n != 0) { remainder = n % 10; n /= 10; decimalNumber += remainder * pow(2, i); ++i; } return decimalNumber; } int factorial(int n) { long long res = 1; for (int i = 1; i <= n; i++) { res = ((res * i) % mod + mod) % mod ; } return res; } vector<int> vis; vector<set<int>> edg; // set<vector<int>> res; set<vector<int>> pos; vector<int> check; map<vector<int>, int> mq; map<vector<int>, int> mp; set<int> nums; int res = 0; bool stop = false; void solve(int num, vector<int> con) { if (con == check) { // res.insert(con); // coutArray(con, con.size()); res++; stop = true; return; } for (auto e : edg[num]) { if (vis[e] != 1 && stop != true) { vis[e] = 1; if (e == check[con.size()]) { con.pb(e); solve(e, con); con.pop_back(); } con.pb(e); if (con.size() == 3) { mp[con] = 1; vector<int> u = con; reverse(u.begin(), u.end()); mp[u] = 1; } con.pop_back(); solve(e, con); vis[e] = 0; } } } int32_t main() { fast; // #ifndef ONLINE_JUDGE // freopen("input.txt", "r", stdin); // freopen("output.txt", "w", stdout); // #endif input(int, inter); input(int, roads); vis.resize(inter + 1); edg.resize(inter + 1); while (roads--) { input(int, num1); input(int, num2); edg[num1].insert(num2); edg[num2].insert(num1); nums.insert(num1); nums.insert(num2); } for (auto q : nums) { for (auto w : nums) { if (q == w) { continue; } for (auto e : nums) { if (e == w || e == q) { continue; } vector<int> p; p.pb(q); p.pb(w); p.pb(e); pos.insert(p); // coutArray(p, 3); } } } for (auto vec : pos) { if (mp[vec] == 1) { res++; continue; } vis[vec[0]] = 1; vector<int> v; v.pb(vec[0]); check = vec; solve(vec[0], v); vis[vec[0]] = 0; stop = false; } cout << res << endl; // for (auto e : edg[2]) { // cout << e << endl; // } }
#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...