답안 #570440

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
570440 2022-05-29T22:29:38 Z urosk 어르신 집배원 (BOI14_postmen) C++14
100 / 100
403 ms 78000 KB
// __builtin_popcount(x) broj bitova
// __builtin_popcountll(x)
// __builtin_clz(x) vodece nule
// __builtin_clzll(x)
// __builtin_ctz(x) nule na pocetku
// __builtin_ctzll(x)
// 2000000011
// 2000000033
#include "bits/stdc++.h"
#include <ext/pb_ds/tree_policy.hpp>
#include <ext/pb_ds/assoc_container.hpp>
#define ld double
#define ll long long
#define ull unsigned long long
#define llinf 100000000000000000LL // 10^17
#define iinf 2000000000 // 2*10^9
#define pb push_back
#define popb pop_back
#define fi first
#define sc second
#define endl '\n'
#define pii pair<int,int>
#define pll pair<ll,ll>
#define pld pair<ld,ld>
#define sz(a) int(a.size())
#define all(a) a.begin(),a.end()
#define rall(a) a.begin(),a.end(),greater<int>()
#define getunique(v) {sort(all(v)); v.erase(unique(all(v)), v.end());}
#define pi 3.14159265358979323846
#define here cerr<<"---------------------------\n"
#define ceri(a,l,r) {for(ll i = l;i<=r;i++) cerr<<a[i]<< " ";cerr<<endl;}
#define ceri2(a,l,r,n,m) {for(ll i = l;i<=r;i++){for(ll j = n;j<=m;j++) cerr<<a[i][j]<< " ";cerr<<endl;}}
#define yes cout<<"YES"<<endl
#define no cout<<"NO"<<endl
using namespace std;
using namespace __gnu_pbds;

typedef tree<int,null_type,less<int>,rb_tree_tag,tree_order_statistics_node_update> ordered_set;

mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
ll rnd(ll l,ll r){
    return uniform_int_distribution<ll>(l,r)(rng);
}

void setIO(string inoutname)
{
	freopen((inoutname+".in").c_str(),"r",stdin);
    	freopen((inoutname+".out").c_str(),"w",stdout);
}
#define mod 1
ll gcd(ll a, ll b)
{
   if(b==0) return a;
   if(a==0) return b;
   if(a>=b)  return gcd(a%b,b);
   return  gcd(a,b%a);
}
ll lcm(ll a,ll b){
   return (a/gcd(a,b))*b;
}
ll add(ll a,ll b){
	a+=b;
	if(a<0) a+=mod;
	if(a>=mod) a%=mod;
	return a;
}
ll mul(ll a,ll b){return(a*b)%mod;}
#define maxn 500005
vector<ll> g[maxn];
ll n,m;
bool vis[maxn];
vector<ll> ans;
ll it[maxn];
bool vis2[maxn];
void euler(ll u){
    vis2[u] = 1;
    while(it[u]<sz(g[u])){
        ll s = g[u][it[u]];
        ll j = g[u][it[u]]>>32LL;
        s = s&((1LL<<32LL)-1);
        it[u]++;
        if(vis[j]) continue;
        vis[j] =1;
        euler(s);
    }
    ans.pb(u);
}
void tc(){
	ios_base::sync_with_stdio(false);cerr.tie(0);cout.tie(0);cin.tie(0);
    cin >> n >> m;
    for(ll i = 1;i<=m;i++){
        ll x,y; cin >> x >> y;
        g[x].pb(y+(((ll)i)<<32LL));
        g[y].pb(x+(((ll)i)<<32LL));
    }
    for(ll i = 1;i<=n;i++) if(!vis2[i]) euler(i);
    fill(vis,vis+maxn,0);
    vector<ll> v;
    vector<ll> w;
    for(ll x : ans){
        if(vis[x]==1){
            while(v.back()!=x){
                w.pb(v.back());
                v.popb();
            }
            w.pb(x);
            for(ll y : w){
                vis[y] = 0;
                cout<<y<< " ";
            }
            cout<<endl;
            w.clear();
            vis[x] = 1;
        }else vis[x] = 1,v.pb(x);
    }
}
int main(){
	ios_base::sync_with_stdio(false);cerr.tie(0);cout.tie(0);cin.tie(0);
	//setIO("lol");
	int t; t = 1;
	while(t--){
		tc();
	}
	return 0;
}
/*
10 15
1 3
5 1
2 3
9 2
3 4
6 3
4 5
7 4
4 8
5 7
8 5
6 7
7 8
8 10
10 9

*/

Compilation message

postmen.cpp: In function 'void setIO(std::string)':
postmen.cpp:47:9: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   47 |  freopen((inoutname+".in").c_str(),"r",stdin);
      |  ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
postmen.cpp:48:13: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   48 |      freopen((inoutname+".out").c_str(),"w",stdout);
      |      ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 9 ms 12520 KB Output is correct
2 Correct 6 ms 12500 KB Output is correct
3 Correct 7 ms 12460 KB Output is correct
4 Correct 8 ms 12896 KB Output is correct
5 Correct 7 ms 12628 KB Output is correct
6 Correct 9 ms 13004 KB Output is correct
7 Correct 12 ms 14152 KB Output is correct
8 Correct 8 ms 12728 KB Output is correct
9 Correct 37 ms 21272 KB Output is correct
10 Correct 9 ms 12756 KB Output is correct
11 Correct 8 ms 12844 KB Output is correct
12 Correct 38 ms 21700 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 7 ms 12500 KB Output is correct
2 Correct 7 ms 12500 KB Output is correct
3 Correct 9 ms 12452 KB Output is correct
4 Correct 10 ms 12884 KB Output is correct
5 Correct 7 ms 12592 KB Output is correct
6 Correct 9 ms 12984 KB Output is correct
7 Correct 12 ms 14144 KB Output is correct
8 Correct 9 ms 12756 KB Output is correct
9 Correct 46 ms 21268 KB Output is correct
10 Correct 8 ms 12756 KB Output is correct
11 Correct 7 ms 12756 KB Output is correct
12 Correct 37 ms 21928 KB Output is correct
13 Correct 74 ms 25432 KB Output is correct
14 Correct 51 ms 21832 KB Output is correct
15 Correct 60 ms 22752 KB Output is correct
16 Correct 68 ms 25428 KB Output is correct
17 Correct 52 ms 18964 KB Output is correct
18 Correct 65 ms 22748 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 7 ms 12536 KB Output is correct
2 Correct 7 ms 12500 KB Output is correct
3 Correct 7 ms 12500 KB Output is correct
4 Correct 8 ms 12884 KB Output is correct
5 Correct 8 ms 12628 KB Output is correct
6 Correct 8 ms 13012 KB Output is correct
7 Correct 11 ms 14140 KB Output is correct
8 Correct 8 ms 12756 KB Output is correct
9 Correct 35 ms 21236 KB Output is correct
10 Correct 8 ms 12692 KB Output is correct
11 Correct 8 ms 12816 KB Output is correct
12 Correct 40 ms 21700 KB Output is correct
13 Correct 72 ms 25416 KB Output is correct
14 Correct 53 ms 21824 KB Output is correct
15 Correct 75 ms 22680 KB Output is correct
16 Correct 62 ms 25444 KB Output is correct
17 Correct 70 ms 19012 KB Output is correct
18 Correct 59 ms 22780 KB Output is correct
19 Correct 403 ms 77996 KB Output is correct
20 Correct 332 ms 59888 KB Output is correct
21 Correct 332 ms 63740 KB Output is correct
22 Correct 386 ms 78000 KB Output is correct
23 Correct 144 ms 54596 KB Output is correct
24 Correct 379 ms 45048 KB Output is correct
25 Correct 371 ms 64460 KB Output is correct