提出 #66541743


ソースコード 拡げる

#include<algorithm>
#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<vector>
#include<cmath>
#include<queue>
#define cmin(a,b) a=std::min(a,b)
#define cmax(a,b) a=std::max(a,b)
#define maxn 1000006
#define mod
#define inf
#define int long long
int n,q;
struct node{
	int x,y;
}ls[maxn];
int dis(int x,int y){
	return abs(ls[x].x-ls[y].x)+abs(ls[x].y-ls[y].y);
} 
namespace DSU{
	int fa[maxn];
	int find(int x){
		if(fa[x]==x){
			return x;
		}
		return fa[x]=find(fa[x]);
	}
	void merge(int u,int v){
		fa[find(u)]=find(v);
	}
	int connect(int u,int v){
		return find(u)==find(v);
	}
}
using namespace DSU;
struct info{
	int val,x,y;
	bool operator <(const info oth)const{
		return val>oth.val;
	}
}; 
std::priority_queue<info> que;
signed main(){
	scanf("%lld%lld",&n,&q);
	int cnt=n; 
	for(int i=1;i<=n+q;i++){
		fa[i]=i;
	}
	for(int i=1;i<=n;i++){
		scanf("%lld%lld",&ls[i].x,&ls[i].y);
		for(int j=1;j<i;j++){
			que.push({dis(i,j),i,j});
		}
	}
	for(int i=1;i<=q;i++){
		int opt;
		scanf("%lld",&opt);
		if(opt==1){
			n++,cnt++;
			scanf("%lld%lld",&ls[n].x,&ls[n].y);
			for(int i=1;i<=n-1;i++){
				que.push({dis(i,n),i,n});
			}
		}else if(opt==2){
			if(cnt==1){
				puts("-1");
			}else{
				int v=0;
				while(1){
					info x=que.top();
//					printf("%lld %lld %lld\n",x.x,x.y);
					que.pop();
					if(!connect(x.x,x.y)){
						v=x.val;
						merge(x.x,x.y);
						cnt--;
						break;
					}
				}
				while(!que.empty()){
					info x=que.top();
					if(x.val==v){
						que.pop();
						if(!connect(x.x,x.y)){
							merge(x.x,x.y);
							cnt--;
						}
					}else{
						break;
					}
				}
				printf("%lld\n",v);
			}
		}else{
			int u,v;
			scanf("%lld%lld",&u,&v);
			if(connect(u,v)){
				puts("Yes");
			}else{
				puts("No");
			}
		}
	}
	return 0;
}
/*

*/

提出情報

提出日時
問題 F - Connecting Points
ユーザ huanghongjun
言語 C++ 20 (gcc 12.2)
得点 500
コード長 1905 Byte
結果 AC
実行時間 220 ms
メモリ 200076 KiB

コンパイルエラー

Main.cpp: In function ‘int main()’:
Main.cpp:45:14: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   45 |         scanf("%lld%lld",&n,&q);
      |         ~~~~~^~~~~~~~~~~~~~~~~~
Main.cpp:51:22: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   51 |                 scanf("%lld%lld",&ls[i].x,&ls[i].y);
      |                 ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:58:22: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   58 |                 scanf("%lld",&opt);
      |                 ~~~~~^~~~~~~~~~~~~
Main.cpp:61:30: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   61 |                         scanf("%lld%lld",&ls[n].x,&ls[n].y);
      |                         ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:97:30: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   97 |                         scanf("%lld%lld",&u,&v);
      |                         ~~~~~^~~~~~~~~~~~~~~~~~

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 500 / 500
結果
AC × 1
AC × 45
セット名 テストケース
Sample 00_sample_00.txt
All 00_sample_00.txt, 01_test_00.txt, 01_test_01.txt, 01_test_02.txt, 01_test_03.txt, 01_test_04.txt, 01_test_05.txt, 01_test_06.txt, 01_test_07.txt, 01_test_08.txt, 01_test_09.txt, 01_test_10.txt, 01_test_11.txt, 01_test_12.txt, 01_test_13.txt, 01_test_14.txt, 01_test_15.txt, 01_test_16.txt, 01_test_17.txt, 01_test_18.txt, 01_test_19.txt, 01_test_20.txt, 01_test_21.txt, 01_test_22.txt, 01_test_23.txt, 01_test_24.txt, 01_test_25.txt, 01_test_26.txt, 01_test_27.txt, 01_test_28.txt, 01_test_29.txt, 01_test_30.txt, 01_test_31.txt, 01_test_32.txt, 01_test_33.txt, 01_test_34.txt, 01_test_35.txt, 01_test_36.txt, 01_test_37.txt, 01_test_38.txt, 01_test_39.txt, 01_test_40.txt, 01_test_41.txt, 01_test_42.txt, 01_test_43.txt
ケース名 結果 実行時間 メモリ
00_sample_00.txt AC 1 ms 3848 KiB
01_test_00.txt AC 47 ms 52600 KiB
01_test_01.txt AC 49 ms 52696 KiB
01_test_02.txt AC 217 ms 200076 KiB
01_test_03.txt AC 50 ms 52528 KiB
01_test_04.txt AC 112 ms 101856 KiB
01_test_05.txt AC 118 ms 102032 KiB
01_test_06.txt AC 75 ms 52580 KiB
01_test_07.txt AC 49 ms 52536 KiB
01_test_08.txt AC 77 ms 52532 KiB
01_test_09.txt AC 69 ms 52560 KiB
01_test_10.txt AC 69 ms 52556 KiB
01_test_11.txt AC 115 ms 101828 KiB
01_test_12.txt AC 49 ms 52572 KiB
01_test_13.txt AC 50 ms 52556 KiB
01_test_14.txt AC 220 ms 200032 KiB
01_test_15.txt AC 48 ms 52604 KiB
01_test_16.txt AC 111 ms 101856 KiB
01_test_17.txt AC 114 ms 102036 KiB
01_test_18.txt AC 73 ms 52596 KiB
01_test_19.txt AC 49 ms 52532 KiB
01_test_20.txt AC 74 ms 52604 KiB
01_test_21.txt AC 65 ms 52700 KiB
01_test_22.txt AC 69 ms 52580 KiB
01_test_23.txt AC 113 ms 101876 KiB
01_test_24.txt AC 88 ms 52560 KiB
01_test_25.txt AC 100 ms 52648 KiB
01_test_26.txt AC 91 ms 52524 KiB
01_test_27.txt AC 82 ms 52596 KiB
01_test_28.txt AC 99 ms 52552 KiB
01_test_29.txt AC 90 ms 52584 KiB
01_test_30.txt AC 100 ms 52580 KiB
01_test_31.txt AC 75 ms 52672 KiB
01_test_32.txt AC 88 ms 52676 KiB
01_test_33.txt AC 88 ms 52608 KiB
01_test_34.txt AC 77 ms 52692 KiB
01_test_35.txt AC 76 ms 52524 KiB
01_test_36.txt AC 80 ms 52596 KiB
01_test_37.txt AC 76 ms 52524 KiB
01_test_38.txt AC 75 ms 52584 KiB
01_test_39.txt AC 73 ms 52520 KiB
01_test_40.txt AC 114 ms 101792 KiB
01_test_41.txt AC 74 ms 52576 KiB
01_test_42.txt AC 129 ms 101948 KiB
01_test_43.txt AC 1 ms 3856 KiB