USACO-Agri-Net

来源:互联网 发布:手机淘宝怎样添加好友 编辑:程序博客网 时间:2024/05/16 09:45

来源:http://ace.delos.com/usacoprob2?a=ecro6SKAJN4&S=agrinet

这题明显的最小生成树,说多了都侮辱我的智商了= =

/*ID:ay27272PROG:agrinetLANG:C++*/#include <iostream>#include <cstdio>#include <cstring>using namespace std;#define NN 105int map[NN][NN]={0};int dist[NN];bool f[NN];int main(){    freopen("agrinet.in","r",stdin);    freopen("agrinet.out","w",stdout);    int n;    cin>>n;    for (int i=1;i<=n;i++)        for (int j=1;j<=n;j++)            cin>>map[i][j];    memset(dist,10,sizeof(dist));    memset(f,true,sizeof(f));    int total=0;    int S=1;    for (int i=1;i<=n;i++)        if (map[S][i]!=0)            dist[i]=map[S][i];    dist[1]=0;    f[S]=false;    int min,h;    for (int i=2;i<=n;i++)    {        min=dist[0];        for (int j=1;j<=n;j++)            if (f[j] && dist[j]<min)                min=dist[h=j];        f[h]=false;        total+=min;        for (int j=1;j<=n;j++)            if (map[h][j]!=0 && map[h][j]<dist[j])                dist[j]=map[h][j];    }    cout<<total<<endl;    return 0;}
原创粉丝点击