POJ1789 Truck History【最小生成树】【终于AC了】
2012-04-14 12:40
465 查看
这道题提交了N次,终于AC了,哪里错了呢???我一直找代码的错误。后来错误原因让我大吃一惊:我误以为题目中每一个case后都有一个0的,原来是全部case后边有一个0。。。。。
Problem: 1789 | User: qq1203456195 | |
Memory: 15892K | Time: 485MS | |
Language: C | Result: Accepted |
#include <stdio.h> #include <string.h> #define N 2002 int n;//number of truck 2..2000 char truck [7];//different types of truck int M ;//distance between 2 trucks int lowcost ;//辅助数组 int visited ;//记录是否被放进最小生成树中 int dis(int i,int j)//计算i,j类truck的不同 { int k,c=0; for (k=0;k<7;k++) if(truck[i][k]!=truck[j][k]) c++; return c; } int min_lowcost(int *m) { int i,t; for (i=0;i<n;i++) if (!visited[i]&&lowcost[i]<(*m)) { t=i; (*m)=lowcost[i]; } return t; } int Prim() { int i,mindis=0,next_idx,j,next_len; for (i=0;i<n;i++) { visited[i]=0; lowcost[i]=M[0][i];//和衍生图中距离最近的那个点的距离 } visited[0]=1; for (i=1;i<n;i++)//将其余n-1辆车放入衍生图 { next_len=8; next_idx=min_lowcost(&next_len);//找出花费最小的车next mindis+=next_len;//最小生成树累加 visited[next_idx]=1;//添加到衍生图 for (j=0;j<n;j++)//更新辅助数组 { if(!visited[j]&&M[next_idx][j]<lowcost[j]) lowcost[j]=M[next_idx][j]; } } return mindis; } int main() { int i,j; while(scanf("%d",&n)!=EOF) { if (n==0) break; //read info memset(truck,0,sizeof(truck)); for (i=0;i<n;i++) scanf("%s",truck[i]); //init Metric memset(M,8,sizeof(M)); for (i=0;i<n;i++) for (j=i+1;j<n;j++) M[i][j]=M[j][i]=dis(i,j); //output result printf("The highest possible quality is 1/%d.\n",Prim()); } return 1; }
相关文章推荐
- POJ 1789 Truck History (最小生成树---prim)
- Truck History - POJ 1789 最小生成树
- POJ 1789 Truck History(构造最小生成树)
- POJ 1789 ——Truck History 最小生成树 prim算法
- POJ 1789-Truck History 最小生成树 Kruskal算法
- POJ 1789 Truck History (Kruskal 最小生成树)
- POJ 题目1789 Truck History(最小生成树)
- POJ 1789 Truck History 图论 prim算法 最小生成树
- poj1789 Truck History ——最小生成树入门题_Prim算法
- POJ 1789 Truck History(最小生成树--prime)
- POJ 1789 Truck History 最小生成树 KRUSKAL算法
- poj 1789 Truck History 【最小生成树】
- [POJ](1789)Truck History ---最小生成树(图)
- 【POJ 1789】Truck History(思维,最小生成树)
- POJ 1789 Truck History(最小生成树)
- poj 1789 Truck History (最小生成树)
- poj 1789 Truck History (最小生成树)
- POJ1789 Truck History 最小生成树 + 路径压缩
- POJ 1789 Truck History 最小生成树 KRUSKAL算法
- POJ 1789 Truck History 【最小生成树&&Kruskal】