poj 2421

来源:互联网 发布:淘宝的放心淘和运费险 编辑:程序博客网 时间:2024/05/20 02:29

最小生成树模板题,就是POJ的英文实在有点难翻译,好好的一个X,Y坐标分别对应两个村庄,数值对应村庄距离愣是说得不明不白。

代码:

#include<iostream>using namespace std;#define maxn 300000;int N,Q;int mm[105][105];int flag[105];int low[105];int sum;void prim(){   int i,j,pos,minn;   flag[1]=1;   low[1]=0;   for(i=2;i<=N;i++)low[i]=mm[1][i];  // cout<<N<<endl;   for(i=2;i<=N;i++)   {    pos=1;    //cout<<N<<endl;    minn=maxn;    for(j=2;j<=N;j++)    if(!flag[j]&&low[j]<minn){minn=low[j];pos=j;}    sum+=minn;   // cout<<minn<<" "<<pos<<endl;    flag[pos]=1;    for(j=2;j<=N;j++)    if(!flag[j]&&low[j]>mm[pos][j])low[j]=mm[pos][j];   }}int main(){     int T,i,j;     cin>>N;     for(i=1;i<=N;i++)     for(j=1;j<=N;j++)     cin>>mm[i][j];     cin>>T;     while(T--)     {      cin>>i>>j;      mm[i][j]=mm[j][i]=0;     }     sum=0;     prim();     cout<<sum<<endl;     return 0;}


0 0
原创粉丝点击