Submission #934068

#TimeUsernameProblemLanguageResultExecution timeMemory
934068vjudge1다리 (APIO19_bridges)C++17
13 / 100
3076 ms9556 KiB
#include<bits/stdc++.h>
using namespace std;
#define pb push_back
#define deb(x) ;
using lli=long long int;
 
 
#ifndef LOCAL
    #define endl '\n'
#endif


void solve(){
  lli n,m;
  cin>>n>>m;
  vector<vector<pair<lli,bool>>> adj (n+1);
  vector<pair<pair<lli,lli>, lli>> edges (m+1);
  for(lli i=1; i<=m; ++i){
    lli a,b,w;
    cin>>a>>b>>w;
    edges[i]={{a,b},w};
    adj[a].pb({i,true});
    adj[b].pb({i, false});
  }
  lli q;
  cin>>q;
  while(q--){
    lli t,e,w;
    cin>>t>>e>>w;
    if(t==1){
      edges[e].second=w;
    }
    if(t==2){
      lli ans=1;
      vector<bool> visited(n+1);
      queue<lli> q;
      visited[e]=true;
      q.push(e);
      while(!q.empty()){
        lli x=q.front();
        q.pop();
        for(lli i=0; i<adj[x].size(); ++i){
          if(adj[x][i].second){
            if(!visited[edges[adj[x][i].first].first.second]){
              if(edges[adj[x][i].first].second >= w){
                visited[edges[adj[x][i].first].first.second]=true;
                ans++;
                q.push(edges[adj[x][i].first].first.second);
              }
            }
          }
          else{
            if(!visited[edges[adj[x][i].first].first.first]){
              if(edges[adj[x][i].first].second >= w){
                visited[edges[adj[x][i].first].first.first]=true;
                ans++;
                q.push(edges[adj[x][i].first].first.first);
              }
            }
          }
        }
      }
      cout<<ans<<endl;
    }
  }
  

}
 
 
int main(){
  ios::ios_base::sync_with_stdio(0);
  cin.tie(0);
     #ifdef LOCAL
    freopen("b.in", "r", stdin);
    freopen("b.out", "w", stdout);
  #endif
  lli t=1;
// cin>>t;
  while(t--){
    solve();
  }
}

Compilation message (stderr)

bridges.cpp: In function 'void solve()':
bridges.cpp:42:23: warning: comparison of integer expressions of different signedness: 'lli' {aka 'long long int'} and 'std::vector<std::pair<long long int, bool> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   42 |         for(lli i=0; i<adj[x].size(); ++i){
      |                      ~^~~~~~~~~~~~~~
#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...