【継続更新】最小生成ツリーテーマセット
3376 ワード
(primアルゴリズム実装)
1)hdoj 1233:やはり融通工事です。
赤裸々な最小生成樹
タイトル:http://acm.hdu.edu.cn/showproblem.php?pid=1233
単純最小生成ツリー
タイトル:http://acm.hdu.edu.cn/showproblem.php?pid=1875
細部を巧みに設定する
http://acm.hdu.edu.cn/showproblem.php?pid=1879
1)hdoj 1233:やはり融通工事です。
赤裸々な最小生成樹
タイトル:http://acm.hdu.edu.cn/showproblem.php?pid=1233
#include
#include
#include
#include
#include
#define maxn 101
using namespace std;
int edges[maxn][maxn];
int main()
{
int n,a,b,i,j,m,s,k;
while(scanf("%d",&n) && n!=0)
{
bool visit[maxn]={false};
int lowcost[maxn];
int ans=0;
fill(edges[0],edges[0]+n*n,INT_MAX);
m=n*(n-1)/2;
for(i=0;i
2)hdoj 1875:畅通工事はまた継続する。単純最小生成ツリー
タイトル:http://acm.hdu.edu.cn/showproblem.php?pid=1875
#include
#include
#include
#include
#include
#define maxn 105
using namespace std;
double dis[maxn][maxn];
struct Pos{
int x,y;
}pos[maxn];
int main()
{
int t,c,i,j;
scanf("%d",&t);
while(t--)
{
int num=0;
double ans=0;
int visit[maxn]={0};
double lowcost[maxn];
scanf("%d",&c);
for(i=1;i<=c;i++)
scanf("%d %d", &pos[i].x, &pos[i].y);
for(i=1;i<=c;i++)
{
for (j = 1; j <= c; j++)
{
if(i==j) continue;
double dist = sqrt(
(pos[i].x - pos[j].x) * (pos[i].x - pos[j].x) + (pos[i].y - pos[j].y) * (pos[i].y - pos[j].y));
if (dist <= 1000 && dist >= 10)
dis[i][j] = dis[j][i] = dist;
else
dis[i][j] = dis[j][i] = INT_MAX;
}
}
visit[1]=1;
num++;
for(i=2;i<=c;i++)
lowcost[i]=dis[1][i];
for(i=1;i
3)hdoj 1879:引き続き開通工事細部を巧みに設定する
http://acm.hdu.edu.cn/showproblem.php?pid=1879
#include
#include
#include
#include
#include
#define maxn 105
using namespace std;
int state[maxn][maxn];
int edges[maxn][maxn];
int main()
{
int n;
while(scanf("%d",&n)&&n!=0)
{
int i,a,b,s,c,j,k;
int ans=0;
int visit[maxn]={0};
int lowcost[maxn],closest[maxn];//closest[I] I
fill(edges[0],edges[0]+n*n,INT_MAX);
int m=n*(n-1)/2;
for(i=1;i<=m;i++)
{
scanf("%d %d %d %d",&a,&b,&c,&s);
if(s==1)
edges[a][b]=edges[b][a]=0;// , , 0
else
edges[a][b]=edges[b][a]=c;
state[a][b]=state[b][a]=s;
}
visit[1]=1;
for(i=2;i<=n;i++)
{
lowcost[i] = edges[1][i];
closest[i]=1;
}
for(i=1;i