結果
問題 | No.2638 Initial fare |
ユーザー |
|
提出日時 | 2024-02-19 21:34:21 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 387 ms / 2,000 ms |
コード長 | 3,382 bytes |
コンパイル時間 | 1,251 ms |
コンパイル使用メモリ | 131,932 KB |
最終ジャッジ日時 | 2025-02-19 16:41:49 |
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 25 |
ソースコード
/*** ^v^**/#include <iostream>#include <numeric>#include <set>#include <iomanip>#include <chrono>#include <queue>#include <string>#include <vector>#include <functional>#include <map>#include <bitset>#include <algorithm>#include <array>#include <random>using namespace std;using ll = long long int;using ld = long double;#define iamtefu ios_base::sync_with_stdio(false); cin.tie(0);#define fl(i,a,n) for (ll i{a}; i<n; i++)#define fr(x,s) for(auto x:s)#define rfl(i,a,n) for (ll i{n-1}; i>=a; i--)#define ty int _; for(cin>>_; _--;)#define print(a) for(auto ele:a){cout<<ele<<" ";}cout<<'\n';#define all(x) x.begin(), x.end()template <typename L, typename R>inline bool chmax(L &a, R b){if (a<b){a=b;return 1;}return 0;}template <typename L, typename R>inline bool chmin(L &a, R b){if (a>b){a=b;return 1;}return 0;}template <typename L, typename R>ostream& operator<<(ostream &fout, const pair<L, R> &p){fout<<"{"<<p.first<<","<<p.second<<"}";return fout;}template <typename L, typename R, typename U>ostream& operator<<(ostream &fout, const tuple<L, R, U> &p){auto &[l, r, u] = p;fout<<"{"<<l<<","<<r<<","<<u<<"}";return fout;}template <typename T>ostream& operator<<(ostream &fout, const vector <T> &v){for (auto &x:v){fout<<x<<" ";}fout<<"\n";return fout;}template <typename T>ostream& operator<<(ostream &fout, const set <T> &st){for (auto &x:st){fout<<x<<" ";}fout<<"\n";return fout;}template <typename T>ostream& operator<<(ostream &fout, const multiset <T> &st){for (auto &x:st){fout<<x<<" ";}fout<<"\n";return fout;}template <typename K, typename V>ostream& operator<<(ostream &fout, const map<K, V> &mp){fout<<"[";for (auto &[x,y]:mp){fout<<x<<":"<<y<<" ";}fout<<"]\n";return fout;}ll gcd(ll a, ll b){if (b==0){return a;}return gcd(b, a%b);}mt19937 rng(chrono::high_resolution_clock::now().time_since_epoch().count());ll pw(ll a, ll b, ll m){ll res=1;a%=m;while (b){if (b&1){res=(res*a)%m;}a=(a*a)%m;b/=2;}return res;}void scn(){// not necessarily distinct// right downll n; cin>>n;vector <vector <ll>> ed(n+1);fl(i,0,n-1){ll u, v; cin>>u>>v;ed[u].push_back(v);ed[v].push_back(u);}vector <ll> vis(n+1);vector <vector <ll>> dp(n+1, vector <ll>(4, 0));auto dfs=[&](const auto &self, ll i)->void{vis[i]++;for (auto x:ed[i]){if (!vis[x]){self(self, x);fl(k,0,3){dp[i][k+1]+=dp[x][k];}}}dp[i][0]=1;};dfs(dfs, 1);ll ans = 0;auto df=[&](const auto &self, ll i)->void{vis[i]++;fl(j,1,4){ans+=dp[i][j];}for (auto x:ed[i]){if (!vis[x]){auto pr = dp[x], pr1 = dp[i];fl(k,0,3){dp[i][k+1]-=dp[x][k];}fl(k,0,3){dp[x][k+1]+=dp[i][k];}self(self, x);swap(dp[i], pr1);swap(dp[x], pr);}}};fill(vis.begin(), vis.end(), 0);df(df, 1);cout<<ans/2<<'\n';}int main(){iamtefu;#if defined(airths)auto t1=chrono::high_resolution_clock::now();freopen("input.txt", "r", stdin);freopen("output.txt", "w", stdout);#endif// ty{scn();}#if defined(airths)auto t2=chrono::high_resolution_clock::now();ld ti=chrono::duration_cast<chrono::nanoseconds>(t2-t1).count();ti*=1e-6;cerr<<"Time: "<<setprecision(12)<<ti;cerr<<"ms\n";#endifreturn 0;}