hdu 1233 절 대 컴퓨터 대학원 재시험
2658 단어 최소 생 성 트 리ACMPrimMSThdu1233
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 19512 Accepted Submission(s): 8679
Problem Description
모 성에 서 마을 의 교통 상황 을 조사 하여 얻 은 통계표 에는 임의의 두 마을 간 의 거리 가 열거 되 어 있다.성 정부의 '원활 한 공사' 목 표 는 성 전체의 어느 두 마을 간 에 도 도로 교통 을 실현 할 수 있 도록 하 는 것 이다.가장 작은 도로 의 총 길 이 를 계산 해 주세요.
Input
테스트 입력 은 약간의 테스트 용례 를 포함한다.각 테스트 용례 의 첫 번 째 줄 은 마을 수 N (< 100) 을 드 립 니 다.이 어 N (N - 1)/2 줄 은 마을 간 의 거리 에 대응 하고 각 줄 은 두 마을 의 번호 와 이 두 마을 간 의 거 리 를 나타 낸다.간단하게 말하자면, 마을 은 1 부터 N 까지 번 호 를 매 긴 다.
N 이 0 일 때 입력 이 끝나 면 이 용례 는 처리 되 지 않 습 니 다.
Output
각 테스트 사례 에 대해 서 는 1 줄 에서 가장 작은 도로 총 길 이 를 출력 한다.
Sample Input
3
1 2 1
1 3 2
2 3 4
4
1 2 1
1 3 4
1 4 1
2 3 3
2 4 2
3 4 5
0
Sample Output
3
5
Hint
Hint
Huge input, scanf is recommended.
첫 번 째, 최소 생 성 트 리 문 제 를 만 들 고 데이터 구조 교과서 에 따라 올 라 왔 습 니 다.괜 찮 은 템 플 릿 이 야.인접 행렬 로 구현 되 는 소박 한 Prim 알고리즘 을 사용 합 니 다.다른 문제 가 시간 을 초과 할 지 는 모 르 겠 습 니 다.
#include <iostream>
using namespace std;
const int MAX=5500;
const int INF = 0x3f3f3f3f;
int cost[MAX][MAX];
int sum;
void prim(int n,int v)
{
int lowcost[MAX],min;
int i,j,k;
for(i=1;i<=n;i++)
{
lowcost[i]=cost[v][i];
}
for(i=1;i<n;i++)
{
min=INF;
for(j=1;j<=n;j++)
if(lowcost[j]!=0&&lowcost[j]<min)
{
min=lowcost[j];
k=j;
}
sum+=min;
lowcost[k]=0;
for(j=1;j<=n;j++)
if(cost[k][j]!=0&&cost[k][j]<lowcost[j])
{
lowcost[j]=cost[k][j];
}
}
}
int main()
{
int n;
while(scanf("%d",&n))
{
if(!n)
break;
sum=0;
int t=n*(n-1)/2;
for(int i=0;i<=n;i++)
for(int j=0;j<=n;j++)
if(i==j)
cost[0][0]=0;
int v,h,d;
while(t--)
{
scanf("%d%d%d",&v,&h,&d);
cost[v][h]=d;
cost[h][v]=d;
}
prim(n,1);
printf("%d
",sum);
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
7 - 10 도로 촌 촌 통 (30 분) 자바 버 전이것 이 바로 가장 짧 은 길 입 니 다. 순 서 를 정 하고 start 와 end 를 찾 으 면 됩 니 다. c++ 로 하면 10 분 이면 끝 낼 수 있 을 것 같 습 니 다. 하지만 이번 학기 에 자바 를 배 우...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.