Hdu 1863 원활 한 공정 절차 참조
2315 단어 HDU
#include<iostream>
#include<vector>
using namespace std;
vector< vector<int> > mat;
vector<bool> visited;
vector<int> dist;
int minVertex(){
int next=-1;
for (int i=0;i<dist.size();i++)
if (!visited[i])
if (next==-1 || dist[i]<dist[next]) next=i;
return next;
}
int Prim(){
dist=mat[0];
fill(visited.begin(), visited.end(), false);
visited[0]=true;
int cost=0;
while(true){
int next = minVertex();
if (next == -1 || dist[next]==INT_MAX) break;
visited[next] = true;
cost += dist[next];
for (int i=0; i<mat.size(); i++)
if (visited[i]==false && mat[next][i]<dist[i]) dist[i]=mat[next][i];
}
for(int i=0;i<visited.size();i++)
if (visited[i]==false) return -1;
return cost;
}
bool run(){
int i,n,m,x,y,w;
scanf("%d %d",&m,&n);
if(m==0) return false;
mat.resize(n);
for(i=0; i<n; i++){
mat[i].resize(n);
fill(mat[i].begin(), mat[i].end(),INT_MAX);
}
for(i=0; i<m; i++){
scanf("%d%d%d",&x,&y,&w);
mat[x-1][y-1]=w;
mat[y-1][x-1]=w;
}
dist.resize(n);
visited.resize(n);
int t=Prim();
if (t==-1) printf("?/n");
else printf("%d/n",t);
return true;
}
int main(){
while(run());
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[HDU] 4089 활성화 확률 DPdp[i][j]를 모두 i개인의 대기열인 Tomato가 j위 서버가 마비될 확률로 역추를 사용하면 우리는 상태 이동 방정식을 얻을 수 있다. i == 1 : dp[1][1] = dp[1][1] * p1 + dp[1]...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.