Agri-Net POJ

来源:互联网 发布:js json判断是否有key 编辑:程序博客网 时间:2024/06/17 06:42

题意: john当上了镇长,打算给每个农场都连接网络,需要用最小的成本连接其他所有农场,所以要找最少的纤维连在一起,任何两个农场之间的距离不超过十万。输入n,下面有n行n列,代表着每两个农场的距离,对角线为0,因为自己到自己是为0;


分析:直接暴力连接,任选一个起点,每次搜索与起点相距最小的点,然后把上一次的终点再作为起点,直到全部连接。


收获:  这样的连接方式肯定要是链状的,本来想的是从第一个点开始寻找相距最小的点连接,直到最后一个点(显然成不了链,好傻啊啊啊啊)


看了别人的之后


AC:

#include<iostream>#include <cstring>using namespace std;int main(){    int dis[101][101],lock[101],n,i,j,min,finded,p,s;    while(cin>>n&&n)    {        memset(lock,0,sizeof(lock));        for(i=0; i<n; i++)            for(j=0; j<n; j++)                cin>>dis[i][j];        lock[0]=1;        finded=1;        s=0;        while(finded!=n)        {            min=100000000;            for(i=0; i<n; i++)            {                if(lock[i]!=1) continue;                for(j=0; j<n; j++)                {                    if(lock[j]==0)                        if(dis[i][j]<min)                        {                            min=dis[i][j];                            p=j;                        }                }            }            s+=min;            lock[p]=1;            finded++;        }        cout<<s<<endl;    }    return 0;}


0 0