狀態是1的兩個分量直接聯通,然後套模板。
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
#define maxn 1e+9
int pa[10000];
int ranke[10000];
int find(int x)
return pa[x];
}void unin(int x,int y)
else
}typedef
struct qz
;bool cmp(const qz &a,qz &b)
for(int i=0;iint aa,bb,cc,dd;
scanf("%d%d%d%d",&aa,&bb,&cc,&dd);
if(dd==1)
else
}sort(s,s+m,cmp);
int res=0;
int countt=0;
for(int i=0;iif(flag==0) }}
printf("%d\n",res);
}return
0;}
算出每兩個島之間的距離,判斷一下,然後再用模板。
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
int pa[10000];
int ranke[10000];
int find(int x)
void unin(int x,int y)
}typedef
struct qz;
bool cmp(const qz& a,const qz &b)
for(int i=0;iscanf("%d%d",&a[i],&b[i]);}
for(int i=0;ifor(int j=i+1;jdouble z=fabs(sqrt(pow(a[j]-a[i],2)+pow(b[j]-b[i],2)));
if(z>=10.0&&z<=1000.0)}}
sort(s.begin(),s.end(),cmp);
int countt=0;
double ans=0.0;
for(int i=0;iif(find(e.v)!=find(e.u))
}if(countt==n-1)printf("%.1lf\n",ans*100);
else
printf("oh!\n");
}return
0; }
方法如上,先打出素數表,然後依次求得距離,特麼的要注意,1不是素數…
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
const
int maxn=2000005;
int a[maxn];
void prime()
}} int pa[200000];
int ranke[200000];
int find(int x)
void unin(int x,int y)
}typedef
struct qz;
bool cmp(const qz& a,const qz &b)
int n;
memset(dd,0,sizeof(dd));
scanf("%d",&n);
vector
s; for(int i=1;i<=n;i++)scanf("%d",&dd[i]);
for(int i=1;i<=n;i++)}}
sort(s.begin(),s.end(),cmp);
int countt=0;
long
long res=0;
for(int i=0;iint c=e.v;
int cc=e.u;
if(find(e.v)!=find(e.u))
}if(countt==n-1)printf("%lld\n",res);
else
printf("-1\n");
}return
0; }
最小生成樹 克魯斯卡爾演算法
c node.h檔案 儲存頂點資訊 class c node c node c node c node p node c node c node c node c node char p data node.h檔案,儲存邊資訊 include class link node link node li...
最小生成樹( 克魯斯卡爾演算法)
name author date 01 12 14 20 17 description 最小生成樹 克魯斯卡爾演算法 關於並查集的演算法,參見 一種簡單而有趣的資料結構 並查集 include include define maxn 1000 最大頂點數量 define max 20000 最大邊數...
最小生成樹 克魯斯卡爾方法
原文出自 個人非常喜歡這段 不是特別難,但是又新學到了東西。思路還特別清晰。給這個博主膜拜了。有n個城市,你要把他們用隧道連起來,問最少修多少公尺的隧道。include include include include include include include include include d...