답안 #240032

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
240032 2020-06-17T18:55:42 Z kshitij_sodani Two Transportations (JOI19_transportations) C++17
38 / 100
1158 ms 61240 KB
#include <bits/stdc++.h>
using namespace std;
typedef int64_t llo;
#define mp make_pair
#define pb push_back
#define a first 
#define b second
#include "Azer.h"



vector<pair<int,int>> adj[2001];
int dist[2001];
int vis[2001];
int num=0;
int cur=0;
int st=0;
int last=0;
pair<int,int> best;
int num2=0;
int cur2=0;
int n;
vector<int> Answer(){
	vector<int> ans2;
	for(int i=0;i<n;i++){
		ans2.pb(dist[i]);
	}
	return ans2;

}
void ReceiveA(bool x){
	if(st==0){
		if(x){
			num+=(1<<cur);
		}
		cur+=1;
		if(cur==20){
			cur=0;
			st=1;
		}
		else{
			return;
		}
		//cout<<cur<<"<"<<num<<endl;
	}
	if(st==1){
		for(auto j:adj[last]){
			if(dist[j.a]==-1 or dist[j.a]>dist[last]+j.b){
				dist[j.a]=dist[last]+j.b;
			}
		}
		best={-1,-1};
		for(int i=0;i<n;i++){
		//	//cout<<i<<":::"<<dist[i]<<endl;
			if(vis[i]==0 and dist[i]!=-1){
				if(best.a==-1){
					best={dist[i],i};
				}
				else{
					if(dist[i]<best.a){
						best={dist[i],i};
					}
				}
			}
		}
		//cout<<best.a<<"::"<<best.b<<"::"<<num<<endl;
		if(num==0){
			SendA(0);
			st=3;
		}
		else if(best.a==-1){
			SendA(1);
			st=2;
		}
		else if(best.a<num){
			SendA(0);
			st=3;
		}
		else{
			SendA(1);
			st=2;
		}
		//cout<<st<<"....."<<endl;
		if(st==2){
			return;
		}
	}
	if(st==2){
		if(x){
			num2+=(1<<cur2);
		}
		cur2+=1;
		//cout<<cur2<<";;;;;;;;;;;;;;;"<<endl;
		if(cur2==11){
			last=num2;
			//cout<<num2<<"//"<<endl;
			vis[last]=1;
			dist[last]=num;
		}
		else{
			return;
		}		
	}
	if(st==3){
		dist[best.b]=best.a;
		vis[best.b]=1;
		last=best.b;
		for(int i=0;i<20;i++){
			if((1<<i)&best.a){
				SendA(1);
			}
			else{
				SendA(0);
			}
		}
		for(int i=0;i<11;i++){
			if((1<<i)&best.b){
				SendA(1);
			}
			else{
				SendA(0);
			}
		}

	}
	//cout<<last<<','<<dist[last]<<endl;
	st=0;
	num=0;
	num2=0;
	cur2=0;
	cur=0;
	int kk=0;
	for(int i=0;i<n;i++){
		if(vis[i]==0){
			kk=1;
		}
	}
	if(kk){
		SendA(0);
	}
}
void InitA(int nn,int m,vector<int> aa,vector<int> bb,vector<int> cc){
	n=nn;
	for(int i=0;i<m;i++){
		adj[aa[i]].pb({bb[i],cc[i]});
		adj[bb[i]].pb({aa[i],cc[i]});
	}
	for(int i=1;i<n;i++){
		dist[i]=-1;
	}
	vis[0]=1;
	SendA(0);
}


/*int main(){
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);

	return 0;
}*/
#include <bits/stdc++.h>
using namespace std;
typedef int64_t llo;
#define mp make_pair
#define pb push_back
#define a first
#define b second
#include "Baijan.h"

vector<pair<int,int>> adj2[2001];
int dist2[2001];
int st2=0;
int last2=0;
int vis2[2001];
pair<int,int> best2;
int ne;
int cur3=0;
int cur4=0;
int num3=0;
int num4=0;
void ReceiveB(bool x){
	if(st2==0){
		for(auto j:adj2[last2]){
			if(dist2[j.a]==-1 or dist2[j.a]>dist2[last2]+j.b){
				dist2[j.a]=dist2[last2]+j.b;
			}
		}
		best2={-1,-1};
		for(int i=0;i<ne;i++){
			if(vis2[i]==0 and dist2[i]!=-1){
				if(best2.a==-1){
					best2={dist2[i],i};
				}
				else{
					if(dist2[i]<best2.a){
						best2={dist2[i],i};
					}
				}
			}
		}
		//cout<<best2.a<<"::"<<best2.b<<endl;
		best2.a=max(best2.a,0);
		for(int i=0;i<20;i++){
			if((1<<i)&best2.a){
				SendB(1);
			}
			else{
				SendB(0);
			}
		}
		st2=1;

		return;
	}
	if(st2==1){
		if(x){
			st2=2;
		}
		else{
			st2=3;
			return;
		}
	}
	if(st2==2){
		//cout<<1111<<endl;
		st2=0;
		dist2[best2.b]=best2.a;
		vis2[best2.b]=1;
		last2=best2.b;
		for(int i=0;i<11;i++){
			if((1<<i)&best2.b){
				SendB(1);
			}
			else{
				SendB(0);
			}
		}
	}
	if(st2==3){
		if(cur3<20){
			if(x){
				num3+=(1<<cur3);
			}
			cur3++;
			return;
		}
		else{
			if(x){
				num4+=(1<<cur4);
			}
			cur4++;
			if(cur4==11){
				//cout<<20<<endl;

				//cout<<num4<<",,"<<num3<<endl;

				dist2[num4]=num3;
				vis2[num4]=1;
				last2=num4;
				
			}
			else{
				return;
			}
		}
	}
//	//cout<<last2<<"<<<>>>>"<<endl;
	num3=0;
	num4=0;
	cur3=0;
	cur4=0;
	st2=0;

}
void InitB(int nn,int m,vector<int> aa,vector<int> bb,vector<int> cc){
	ne=nn;
	for(int i=0;i<m;i++){
		adj2[aa[i]].pb({bb[i],cc[i]});
		adj2[bb[i]].pb({aa[i],cc[i]});
	}
	for(int i=1;i<ne;i++){
		dist2[i]=-1;
	}
	vis2[0]=1;
}


/*int main(){
	ios_base::sync_with_st2dio(false);
	cin.tie(NULL);

	return 0;
}*/
# 결과 실행 시간 메모리 Grader output
1 Incorrect 499 ms 768 KB Wrong Answer [2]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 20 ms 1536 KB Output is correct
2 Incorrect 498 ms 768 KB Wrong Answer [2]
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 378 ms 768 KB Wrong Answer [2]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 728 ms 1536 KB Output is correct
2 Correct 552 ms 1536 KB Output is correct
3 Correct 767 ms 23816 KB Output is correct
4 Correct 476 ms 1536 KB Output is correct
5 Correct 710 ms 17528 KB Output is correct
6 Correct 916 ms 1760 KB Output is correct
7 Correct 770 ms 1792 KB Output is correct
8 Correct 757 ms 1792 KB Output is correct
9 Correct 1108 ms 36320 KB Output is correct
10 Correct 752 ms 35920 KB Output is correct
11 Correct 1158 ms 61240 KB Output is correct
12 Correct 1106 ms 53696 KB Output is correct
13 Correct 806 ms 1792 KB Output is correct
14 Correct 18 ms 1536 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 728 ms 1536 KB Output is correct
2 Correct 552 ms 1536 KB Output is correct
3 Correct 767 ms 23816 KB Output is correct
4 Correct 476 ms 1536 KB Output is correct
5 Correct 710 ms 17528 KB Output is correct
6 Correct 916 ms 1760 KB Output is correct
7 Correct 770 ms 1792 KB Output is correct
8 Correct 757 ms 1792 KB Output is correct
9 Correct 1108 ms 36320 KB Output is correct
10 Correct 752 ms 35920 KB Output is correct
11 Correct 1158 ms 61240 KB Output is correct
12 Correct 1106 ms 53696 KB Output is correct
13 Correct 806 ms 1792 KB Output is correct
14 Correct 18 ms 1536 KB Output is correct
15 Correct 862 ms 1536 KB Output is correct
16 Correct 1022 ms 1760 KB Output is correct
17 Incorrect 668 ms 768 KB Wrong Answer [2]
18 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 728 ms 1536 KB Output is correct
2 Correct 552 ms 1536 KB Output is correct
3 Correct 767 ms 23816 KB Output is correct
4 Correct 476 ms 1536 KB Output is correct
5 Correct 710 ms 17528 KB Output is correct
6 Correct 916 ms 1760 KB Output is correct
7 Correct 770 ms 1792 KB Output is correct
8 Correct 757 ms 1792 KB Output is correct
9 Correct 1108 ms 36320 KB Output is correct
10 Correct 752 ms 35920 KB Output is correct
11 Correct 1158 ms 61240 KB Output is correct
12 Correct 1106 ms 53696 KB Output is correct
13 Correct 806 ms 1792 KB Output is correct
14 Correct 18 ms 1536 KB Output is correct
15 Correct 862 ms 1536 KB Output is correct
16 Correct 1022 ms 1760 KB Output is correct
17 Incorrect 668 ms 768 KB Wrong Answer [2]
18 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 499 ms 768 KB Wrong Answer [2]
2 Halted 0 ms 0 KB -