update
This commit is contained in:
		
							parent
							
								
									cf2b7c528a
								
							
						
					
					
						commit
						3fb5c48ee5
					
				@ -1,4 +1,5 @@
 | 
			
		||||
#include<iostream>
 | 
			
		||||
#include<stack>
 | 
			
		||||
using namespace std;
 | 
			
		||||
typedef long long ll;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										93
									
								
								20240917/P1991/P1991.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										93
									
								
								20240917/P1991/P1991.cpp
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,93 @@
 | 
			
		||||
#include <algorithm>
 | 
			
		||||
#include <cmath>
 | 
			
		||||
#include <iomanip>
 | 
			
		||||
#include <ios>
 | 
			
		||||
#include <iostream>
 | 
			
		||||
#include <istream>
 | 
			
		||||
 | 
			
		||||
const int MAX_P = 500+5;
 | 
			
		||||
 | 
			
		||||
struct Dir{
 | 
			
		||||
    int x,y;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct Edge{
 | 
			
		||||
    int s,e;
 | 
			
		||||
    double dis;
 | 
			
		||||
    bool operator<(const Edge that)const {
 | 
			
		||||
        return this->dis < that.dis;
 | 
			
		||||
    }
 | 
			
		||||
}edges[MAX_P*MAX_P];
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
int s,p;
 | 
			
		||||
Dir dirs[MAX_P];
 | 
			
		||||
 | 
			
		||||
decltype(Edge::dis) square(const decltype(Edge::dis) &n){
 | 
			
		||||
    return n*n;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int check_sets[MAX_P];
 | 
			
		||||
 | 
			
		||||
int find_set(const int n){
 | 
			
		||||
    if(check_sets[n]==n){
 | 
			
		||||
        return n;
 | 
			
		||||
    }else{
 | 
			
		||||
        check_sets[n] = find_set(check_sets[n]);
 | 
			
		||||
    }
 | 
			
		||||
    return check_sets[n];
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void merge_set(const int a,const int b){
 | 
			
		||||
    check_sets[find_set(a)] = check_sets[find_set(b)];
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int main(){
 | 
			
		||||
    std::cin.sync_with_stdio(false),std::cin.tie(0),std::cout.tie(0);
 | 
			
		||||
 | 
			
		||||
    std::cin>>s>>p;
 | 
			
		||||
 | 
			
		||||
    for(int i=1;i<=p;i++){
 | 
			
		||||
        check_sets[i]=i;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    for(int i=1;i<=p;i++){
 | 
			
		||||
        std::cin>>dirs[i].x>>dirs[i].y;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    int flag = -1;
 | 
			
		||||
    for(int i=1;i<=p;i++){
 | 
			
		||||
        for(int j=i+1;j<=p;j++){
 | 
			
		||||
            flag++;
 | 
			
		||||
            edges[flag].e=i,edges[flag].s=j,edges[flag].dis=std::sqrt(square(dirs[i].x-dirs[j].x)+square(dirs[i].y-dirs[j].y));
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    std::sort(edges,edges+flag+1);
 | 
			
		||||
 | 
			
		||||
    decltype(Edge::dis) ans{0};
 | 
			
		||||
 | 
			
		||||
    // #define NV(v)std::cout<<#v<<" : "<<(v)<<"\n";
 | 
			
		||||
    #define NV(v)
 | 
			
		||||
 | 
			
		||||
    int cnt{0};
 | 
			
		||||
 | 
			
		||||
    for(int i=0;i<flag;i++){
 | 
			
		||||
        NV(find_set(edges[i].e));
 | 
			
		||||
        NV(find_set(edges[i].s));
 | 
			
		||||
 | 
			
		||||
        if(find_set(edges[i].e)!=find_set(edges[i].s)){
 | 
			
		||||
            NV(edges[i].dis)
 | 
			
		||||
            merge_set(edges[i].e,edges[i].s);
 | 
			
		||||
            // std::cout<<"merge "<<edges[i].e<<" "<<edges[i].s<<"\n";
 | 
			
		||||
            ans=edges[i].dis;
 | 
			
		||||
            cnt++;
 | 
			
		||||
            if(cnt>=p-s){
 | 
			
		||||
                std::cout<<std::fixed<<std::setprecision(2)<<ans<<"\n";
 | 
			
		||||
                return 0;
 | 
			
		||||
            }   
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
@ -7,7 +7,7 @@ end
 | 
			
		||||
if is_mode("release") and (is_plat("linux")or is_plat("mingw")) then 
 | 
			
		||||
    add_cxxflags("-march=native")
 | 
			
		||||
end 
 | 
			
		||||
set_languages("c++latest")
 | 
			
		||||
set_languages("c++23")
 | 
			
		||||
set_warnings("all")
 | 
			
		||||
 | 
			
		||||
target("P1158")
 | 
			
		||||
@ -60,4 +60,7 @@ target("oj1808")
 | 
			
		||||
    add_files("20240915/1808/1808.cpp")
 | 
			
		||||
 | 
			
		||||
target("matchStr")
 | 
			
		||||
    add_files("20240915/matchStr/*.cpp")
 | 
			
		||||
    add_files("20240915/matchStr/*.cpp")
 | 
			
		||||
 | 
			
		||||
target("P1991")
 | 
			
		||||
    add_files("20240917/P1991/P1991.cpp")
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user