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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

ccf魔数c语言,ccf 201609-4 交通规划

發布時間:2025/3/12 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ccf魔数c语言,ccf 201609-4 交通规划 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

附上代碼:

#include#include#include#include#include#include

using namespacestd;#define inf 0xfffffff

intn, m;

typedefstructNODE

{intto;intcost;

friendbool operator < (const NODE &a, const NODE &b) {return a.cost >b.cost;

}

}node;

typedefstructEdge

{int from;intnext;intto;intw;intvalue;

} edge;

edge maps[10000005];int head[100050];int dist[100050];int vids[100050];intcnt;voidcreat ()

{for(int i=0; i<100050; i++)

head[i]=-1;

cnt=0;

}void add(int u,int v,intw)

{

maps[cnt].from =u;

maps[cnt].to=v;

maps[cnt].w=w;

maps[cnt].value=w;

maps[cnt].next=head[u];///一開始放置為-1,-1的條件就可以跳出///下一步接著儲存,head[u]的值,就是前面的位置

head[u]=cnt++;///head[u]會得到這條線的值

}int dijkstra(int s,intt)

{for(int i=0; i<100050; i++)

{

vids[i]=0;

dist[i]=inf;

}

priority_queueque;

node begins;

begins.to=s;

begins.cost=0;

que.push(begins);while(!que.empty())

{

node ends=que.top();

que.pop();if(!vids[ends.to])

{

vids[ends.to]=1;

dist[ends.to]=ends.cost;for(int i = head[ends.to]; ~i; i =maps[i].next)

{int to = maps[i].to, w =maps[i].w;

maps[i].w= ends.cost +w;if(!vids[to])

{

node ans;

ans.to=to;

ans.cost=ends.cost+w;

que.push(ans);

}

}

}

}if(dist[t] ==inf)

{return -1;

}else{returndist[t];

}

}bool cmp(const edge & a, const edge &b)

{if(a.w !=b.w)

{return a.w

}return a.value

}int pre[100050];voidInit()

{for(int i=1; i<=m; i++)

pre[i]=i;

}int finds(intx)

{if(pre[x]==x)returnx;else

return pre[x]=finds(pre[x]);

}void unionjoin(int x,inty)

{int u=finds(x);int v=finds(y);if(u==v)return;elsepre[u]=v;

}bool same(int x,inty)

{return finds(x)==finds(y);

}long longkruskal()

{long long ans=0;

sort(maps,maps+ 2 *m,cmp);for(int i = 0; i< 2 * m; i++)

{if(!same(maps[i].from,maps[i].to))

{

unionjoin(maps[i].from,maps[i].to);

ans+=maps[i].value;

}else

continue;

}returnans;

}intmain()

{while(~scanf("%d%d",&n,&m))

{

creat();for(int i = 0; i < m; i ++) {intu, v, w;

scanf("%d%d%d",&u, &v, &w);

add(u, v, w);

add(v, u, w);

}

dijkstra(1, n);

Init();long long re =kruskal();

printf("%lld\n",re);

}return 0;

}

總結

以上是生活随笔為你收集整理的ccf魔数c语言,ccf 201609-4 交通规划的全部內容,希望文章能夠幫你解決所遇到的問題。

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