hdu4460
제목: 연결된 변을 주고 모든 변을 연결하는 가장 짧은 거리를 구하십시오
코드:
#include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define maxx 99999999;
double dis[200],a[200][200];
int sign[200],x[200],y[200],n,st,en;
double sum=0;
void prim(int v){
int i,j,u;
double temp;
for(i=1;i<=n;i++){
dis[i]=a[v][i];
sign[i]=0;
}
dis[v]=0;sign[v]=1;
for(i=2;i<=n;i++){
temp=maxx;
u=v;
for(j=1;j<=n;j++)
if(dis[j]<temp&&sign[j]==0){
temp=dis[j];
u=j;
}
sum+=temp;
sign[u]=1;
for(j=1;j<=n;j++){
if(a[u][j]<dis[j]&&sign[j]==0)
dis[j]=a[u][j];
}
}
}
using namespace std;
int main(){
int i,j;
while(cin>>n&&n){
cin>>st>>en;
for(i=1;i<200;i++)
for(j=1;j<200;j++)
a[i][j]=maxx;
for(i=1;i<=n;i++)
cin>>x[i]>>y[i];
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
a[i][j]=a[j][i]=sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]));
sum=sqrt((x[st]-x[en])*(x[st]-x[en])+(y[st]-y[en])*(y[st]-y[en]));
a[st][en]=a[en][st]=0; // 0, prim
prim(1);
printf("%.2lf
",sum);
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.