結果
問題 | No.2618 除霊 |
ユーザー |
|
提出日時 | 2024-01-26 22:45:04 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 223 ms / 2,000 ms |
コード長 | 3,322 bytes |
コンパイル時間 | 1,430 ms |
コンパイル使用メモリ | 130,548 KB |
最終ジャッジ日時 | 2025-02-18 23:35:59 |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 43 |
ソースコード
/*** ^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);}ll m; cin>>m;vector <ll> gd(m);vector <ll> tot(n+1);vector <ll> sin(n+1);vector <ll> isg(n+1);fl(i,0,m){cin>>gd[i];isg[gd[i]]++;tot[gd[i]]++;for (auto &x:ed[gd[i]]){tot[x]++;}}vector <ll> ser(n+1);fl(i,0,m){ser[gd[i]]+=(tot[gd[i]]==1);for (auto &x:ed[gd[i]]){ser[gd[i]]+=(tot[x]==1);}}ll co = 0;for (auto &x:tot){co+=(!!x);}fl(i,1,n+1){ll ans = max(0ll, ser[i]-(tot[i]==1));for (auto &x:ed[i]){if (isg[x]){ans+=(ser[x]-(tot[i]==1));if (tot[x]==2 && isg[i]){ans++;}}}cout<<co-(ans+(!!tot[i]));if (i!=n){cout<<'\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;}