Submission #729124

#TimeUsernameProblemLanguageResultExecution timeMemory
729124Jean7Inside information (BOI21_servers)C++14
10 / 100
96 ms17000 KiB
#include <bits/stdc++.h>
#define int long long
 
using namespace std ;
 
bool cnt[4002][4002] ;
int n , k , ans[4002] , in[200005] ;
 
inline void solve () {
    cin >> n >> k ;
    if ( n > 4000 ) {
        int cnt = 0 ;
        for ( int i = 1 ; i <= n + k - 1 ; i++ ) {
            char c ; int x , y ;
            cin >> c ;
            if ( c == 'S' ) {
                cnt++ ;
                cin >> x >> y ;
                if ( !in[x] ) {
                    in[x] = cnt ;
                }
                if ( !in[y] ) {
                    in[y] = cnt ;
                }
            }
            else if ( c == 'Q' ) {
                cin >> x >> y ;
                if ( !in[x] || !in[y] ) {
                    cout << "no\n" ;
                }
                else {
                    if ( x == 1 ) {
                        cout << "yes\n" ;
                    }
                    else if ( in[x] >= in[y] ) {
                        cout << "yes\n" ;
                    }
                    else {
                        cout << "no\n" ;
                    }
                }
            }
            else {
                cin >> x ;
                if ( !in[x] ) {
                    cout << 1 << "\n" ;
                }
                else {
                    cout << cnt - in[x] + 2 << "\n" ;
                }
            }
        }
        return ;
    }
    for ( int i = 1 ; i <= n ; i++ ) {
        cnt[i][i] = 1 ;
        ans[i]++ ;
    }
    for ( int i = 1 ; i <= n + k - 1 ; i++ ) {
        char c ;
        int x , y ;
        cin >> c ;
        if ( c == 'S' ) {
            cin >> x >> y ;
            for ( int i = 1 ; i <= n ; i++ ) {
                if ( cnt[x][i] || cnt[y][i] ) {
                    ans[i] += 2 - cnt[x][i] - cnt[y][i] ;
                    cnt[x][i] = cnt[y][i] = 1 ;
                }
            }
        }
        else if ( c == 'Q' ) {
            cin >> x >> y ;
            cout << ( cnt[x][y] ? "yes\n" : "no\n" ) ;
        }
        else {
            cin >> x ;
            cout << ans[x] << "\n" ;
        }
    }
}
 
signed main () {
    ios_base::sync_with_stdio(0) ;
    cin.tie(0) ;
    cout.tie(0) ;
    int tc = 1 ;
    //cin >> tc ;
    while ( tc-- ) {
        solve() ;
    }
    return 0 ;
}
 
///  JJJJJJJ EEEEEEE  AAAAA  NN   NN 7777777
///     JJ   EE      AA   AA NNN  NN     77
///     JJ   EEEEEE  AAAAAAA NN N NN    77
///  JJ JJ   EE      AA   AA NN  NNN   77
///  JJJJJ   EEEEEEE AA   AA NN   NN  77
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...