日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

POJ 2075 Tangled in Cables

發布時間:2025/4/5 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 POJ 2075 Tangled in Cables 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

也比較水:Hash+最小生成樹,我用的是Prim;好的是我有復習了一下Hash

View Code #include <stdio.h>
#include <string.h>
#include <memory.h>

#define N 1003
#define M 10000

int head[N];
char _data[N][22];
int _next[N],pos;

int nodevp[N];
int nodeu[M],next[M],ind;
float data[M],lowcost[N];


int getKey(char *p)
{
unsigned long result=0;

for( ; *p ;++p)
result=5*result + *p;

return int(result%N);
}
void Hinit()
{
memset(head,-1,sizeof(head));
memset(_next,-1,sizeof(_next));
pos=1;
}
void Hpush(char *p)
{
int key=getKey(p);

_next[pos]=head[key];
strcpy(_data[pos],p);
head[key]=pos;
pos++;

}
int Hsearch(char *p)
{
int key=getKey(p);
int pos=head[key];

while(pos!=-1)
{
if(strcmp(_data[pos],p)==0)
return pos;

// pos=next[pos];這尼瑪坑爹
pos=_next[pos];
}

return -1;
}


void addedge(int v,int u,float val)
{
nodeu[ind]=u;
data[ind]=val;
next[ind]=nodevp[v];
nodevp[v]=ind++;
}

float Prim(int n)
{
int i,j,v=1,u;
float val,finalcost=0.0;

for(i=0;i<=n;i++) lowcost[i]=200.0;
for(i=1;i<n;i++)
{
lowcost[v]=-1.0;
for(j=nodevp[v];~j;j=next[j])
{
u=nodeu[j]; val=data[j];
if(lowcost[u]>0 && val<lowcost[u])
lowcost[u]=val;
}

for(v=0,j=1;j<=n;j++)
{
if(lowcost[j]>0 && lowcost[v]>lowcost[j])
v=j;
}
if(v==0) return 200.0;

finalcost+=lowcost[v];
}

return finalcost;
}


void solve()
{
int i,n,m,v,u;
char s[22],ss[22];
float val,length;

Hinit();
scanf("%f %d",&length,&n);
for(i=0;i<n;i++)
{
scanf("%s",s);
Hpush(s);
}

memset(nodevp,-1,sizeof(nodevp));
scanf("%d",&m);
for(i=0;i<m;i++)
{
scanf("%s %s %f",s,ss,&val);
v=Hsearch(s); u=Hsearch(ss);
addedge(v,u,val);
addedge(u,v,val);
}

val=Prim(n);
if(val>length) printf("Not enough cable\n");
else printf("Need %.1f miles of cable\n",val);

}

int main()
{
// freopen("input.txt","r",stdin);

solve();

return 0;
}

?

轉載于:https://www.cnblogs.com/fornever/archive/2012/03/19/2406961.html

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的POJ 2075 Tangled in Cables的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。