제출 #1157081

#제출 시각아이디문제언어결과실행 시간메모리
1157081irmuunTwo Transportations (JOI19_transportations)C++20
16 / 100
150 ms27728 KiB
#include "Azer.h" #include <vector> #include <bits/stdc++.h> namespace { int N; int variable_example[500000]; int cnt; } // namespace using namespace std; #define ll long long #define pb push_back #define ff first #define ss second #define pii pair<int,int> const int maxq=58000*5,maxn=2000,inf=1e9; int cur=0,tot=0,pos=0,S=0; bool in[maxq]; int dist[maxn]; vector<pii>adj[maxn]; void calc(){ fill(dist,dist+maxn,inf); priority_queue<pii,vector<pii>,greater<pii>>pq; pq.push({0,0}); dist[0]=0; while(!pq.empty()){ auto [d,i]=pq.top(); pq.pop(); if(dist[i]!=d) continue; for(auto [j,w]:adj[i]){ if(dist[i]+w<dist[j]){ dist[j]=dist[i]+w; pq.push({dist[j],j}); } } } } bool first=false; void InitA(int N, int A, vector<int> U, vector<int> V,vector<int> C) { ::N = N; for(int i=0;i<A;i++){ adj[U[i]].pb({V[i],C[i]}); adj[V[i]].pb({U[i],C[i]}); // cerr<<"A : "<<U[i]<<' '<<V[i]<<' '<<C[i]<<"\n"; } for(int i=0;i<N;i++){ SendA(true);//increase counter } } void ReceiveA(bool x) { if(cnt%22==0){ if(x==false){ S++; return; } } in[cnt++]=x; if(cnt%22==0){ pos++; int T=0,D=0; for(int j=0;j<12;j++){ T+=(in[pos+j]?(1<<j):0); } pos+=12; for(int j=0;j<9;j++){ D+=(in[pos+j]?(1<<j):0); } pos+=9; adj[S].pb({T,D}); adj[T].pb({S,D}); // cerr<<"new : "<<S<<' '<<T<<' '<<D<<endl; } // cerr<<"in "<<x<<' '<<cnt<<"\n"; } vector<int>Answer(){ calc(); vector<int>ans(N); for(int i=0;i<N;i++){ ans[i]=dist[i]; } return ans; }
#include "Baijan.h" #include <vector> #include <bits/stdc++.h> using namespace std; namespace { int N,B; int cnt; vector<int>S,T,D; } // namespace int node=-1; void send_number(int x,int bit){ for(int i=0;i<bit;i++){ SendB(x&(1<<i)?true:false); } } void run(){//return all adjacent // cerr<<"run : "<<node<<endl; for(int i=0;i<B;i++){ if(S[i]==node){ send_number(1,1); send_number(T[i],12); send_number(D[i],9); continue; } } send_number(0,1); } void InitB(int N, int B, vector<int> S, vector<int> T, vector<int> D) { ::N = N; ::B = B; ::S = S; ::T = T; ::D = D; } void ReceiveB(bool y) { node++; run(); }
#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...