Submission #221967

# Submission time Handle Problem Language Result Execution time Memory
221967 2020-04-11T15:53:36 Z infinite_iq Pipes (BOI13_pipes) C++14
74.0741 / 100
841 ms 91348 KB
#define fast ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0)
#include <bits/stdc++.h>
using namespace std;
#define sqr 340
#define mid (l+r)/2
#define pb push_back
#define ppb pop_back
#define fi first
#define se second
#define lb lower_bound
#define ub upper_bound
#define ins insert
#define era erase
#define C continue
#define mem(dp,i) memset(dp,i,sizeof(dp))
#define mset multiset
typedef long long ll;
typedef short int si;
typedef long double ld;
typedef pair<int,int> pi;
typedef pair<ll,ll> pll;
typedef vector<int> vi;
typedef vector<ll> vll;
typedef vector<pi> vpi;
typedef vector<pll> vpll;
const ll inf=1e18;
const ld pai=acos(-1);
ll n , m , all ;
set<pll>v[500009];
ll val[500009] , ans[500009] , ret[500009] , VAL[500009] ,done[500009];;
ll start ;
ll calc(int node , ll p ){
        done [node] = 1 ;
        ll ret = 0 ;
        for ( auto u : v[node] ) {
                if ( done [u.fi] ) C ;
                ret = calc ( u.fi , val[u.fi] - p) ;
                break ;
        }
        return ret + p ;
}
void solve ( int node) {
        done [node] = 1 ;
        ll out = 0 ;
        for ( auto u : v[node] ) {
                if ( done [u.fi] ) C ;
                val[u.fi] -= val[node] ;
                ans [ u.se ] = val[node];
                solve( u.fi ) ;
                out = 1 ;
                break;
        }
        if ( !out ) {
                for ( auto u :v[node] ) {
                        if ( u.fi == start ) {
                                ans [ u.se ] = val[ node];
                                break ;
                        }
                }
        }
}
int main () {
        mem ( ret , -1 ) ;
        cin >> n >> m ;
        for ( int i = 0 ; i < n ; i ++ ) cin >> val[i] ;
        for ( int i = 0 ; i < m ; i ++ ) {
                int a , b ;
                cin >> a >> b ;
                a -- , b -- ;
                v[a].ins( { b , i } ) ;
                v[b].ins( { a , i } ) ;
        }
        if ( m > n ) {
                cout << 0 << endl ;
                exit ( 0 ) ;
        }
        set<pll>s;
        for ( int i = 0 ; i < n ; i ++ ) {
                s.ins ( { v[i].size() , i } ) ;
        }
        while ( ( s.size() && s.begin()->fi==1 ) ) {
                int node = s.begin() -> se ;
                int to = v[node].begin() -> fi ;
                int id = v[node].begin() -> se ;
                s.era(s.begin());
                v[node].era( v[node].begin() );
                s.era ( { v[to].size() , to } ) ;
                v[to].era( { node , id } ) ;
                if ( v[to].size() ) s.ins ( { v[to].size() , to } ) ;
                ans [ id ] = -val [ node ] ;
                val [ to ] += -val[node];
                val [ node ] = 0 ;
        }
        if ( s.size() && s.size() % 2 == 0 ) cout << 0 << endl , exit ( 0 ) ;
        if ( !s.size() ) {
                for ( int i = 0 ; i < m ; i ++ ) {
                        cout << -1ll*ans [i] *2ll << endl ;
                }
                exit ( 0 ) ;
        }
        for ( auto u : s ) all += val[u.se] ;
        all /= 2;
        start = s.begin()->se;
        val[start] = all - calc ( 0 , 0 ) ;
        mem(done,0);
        solve(0);
        for ( int i = 0 ;i < m ;i ++ ) cout << -1ll*ans[i]*2ll << endl;
}
# Verdict Execution time Memory Grader output
1 Correct 21 ms 27776 KB Output is correct
2 Correct 21 ms 27776 KB Output is correct
3 Correct 25 ms 27904 KB Output is correct
4 Correct 519 ms 48352 KB Output is correct
5 Correct 21 ms 27776 KB Output is correct
6 Correct 21 ms 27788 KB Output is correct
7 Correct 20 ms 27776 KB Output is correct
8 Correct 21 ms 27776 KB Output is correct
9 Correct 23 ms 27904 KB Output is correct
10 Correct 24 ms 27904 KB Output is correct
11 Correct 24 ms 28032 KB Output is correct
12 Correct 24 ms 27904 KB Output is correct
13 Correct 394 ms 44280 KB Output is correct
14 Correct 488 ms 47496 KB Output is correct
15 Correct 497 ms 48504 KB Output is correct
16 Correct 432 ms 45496 KB Output is correct
17 Correct 519 ms 48504 KB Output is correct
18 Correct 503 ms 48504 KB Output is correct
19 Correct 491 ms 48564 KB Output is correct
20 Correct 22 ms 27776 KB Output is correct
21 Correct 24 ms 27904 KB Output is correct
22 Correct 529 ms 48568 KB Output is correct
23 Correct 402 ms 44152 KB Output is correct
24 Correct 495 ms 48500 KB Output is correct
25 Correct 424 ms 45176 KB Output is correct
# Verdict Execution time Memory Grader output
1 Incorrect 22 ms 31616 KB Output isn't correct
2 Incorrect 25 ms 31872 KB Output isn't correct
3 Correct 258 ms 46856 KB Output is correct
4 Correct 181 ms 41080 KB Output is correct
5 Correct 179 ms 40696 KB Output is correct
6 Correct 841 ms 91260 KB Output is correct
7 Incorrect 23 ms 31616 KB Output isn't correct
8 Incorrect 23 ms 31616 KB Output isn't correct
9 Correct 20 ms 27776 KB Output is correct
10 Correct 20 ms 27776 KB Output is correct
11 Correct 20 ms 27776 KB Output is correct
12 Correct 21 ms 27776 KB Output is correct
13 Correct 20 ms 27776 KB Output is correct
14 Incorrect 22 ms 31616 KB Output isn't correct
15 Incorrect 26 ms 31872 KB Output isn't correct
16 Incorrect 28 ms 31872 KB Output isn't correct
17 Correct 21 ms 27904 KB Output is correct
18 Correct 22 ms 27904 KB Output is correct
19 Correct 22 ms 27904 KB Output is correct
20 Correct 21 ms 27904 KB Output is correct
21 Correct 24 ms 28160 KB Output is correct
22 Incorrect 26 ms 31872 KB Output isn't correct
23 Incorrect 384 ms 48504 KB Output isn't correct
24 Incorrect 486 ms 52596 KB Output isn't correct
25 Correct 254 ms 46840 KB Output is correct
26 Correct 175 ms 41080 KB Output is correct
27 Correct 184 ms 40952 KB Output is correct
28 Correct 183 ms 41592 KB Output is correct
29 Correct 658 ms 78840 KB Output is correct
30 Incorrect 440 ms 51948 KB Output isn't correct
31 Incorrect 438 ms 52476 KB Output isn't correct
32 Incorrect 503 ms 52472 KB Output isn't correct
33 Correct 265 ms 48120 KB Output is correct
34 Correct 175 ms 41080 KB Output is correct
35 Correct 173 ms 40956 KB Output is correct
36 Correct 179 ms 41164 KB Output is correct
37 Correct 830 ms 91348 KB Output is correct
38 Incorrect 471 ms 52472 KB Output isn't correct
39 Incorrect 531 ms 52192 KB Output isn't correct
40 Incorrect 460 ms 52344 KB Output isn't correct
41 Correct 205 ms 47992 KB Output is correct
42 Correct 182 ms 41080 KB Output is correct
43 Correct 173 ms 41080 KB Output is correct
44 Correct 173 ms 40696 KB Output is correct
45 Correct 758 ms 83632 KB Output is correct
46 Incorrect 465 ms 52472 KB Output isn't correct
47 Incorrect 458 ms 52360 KB Output isn't correct
48 Incorrect 445 ms 52472 KB Output isn't correct
49 Correct 301 ms 46924 KB Output is correct
50 Correct 172 ms 40952 KB Output is correct
51 Correct 172 ms 41080 KB Output is correct
52 Correct 174 ms 40824 KB Output is correct
53 Correct 757 ms 84812 KB Output is correct
54 Incorrect 459 ms 52220 KB Output isn't correct