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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

洛谷1522牛的旅行

發(fā)布時間:2025/7/25 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 洛谷1522牛的旅行 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

題目:https://www.luogu.org/problemnew/show/P1522

簡單地求了一堆最短路而已。

1.有時候sqrt里要 * 1.0,不知何故;本題需要嗎?

2.那個地方是 f [ col [ cur ] ],不是 f [ cnt ]!

*3.原來可以輸入 .1%d 來限制輸入一位數(shù)字,很方便!

#include<iostream> #include<cstdio> #include<cstring> #include<queue> #include<cmath> #define ll long long using namespace std; const int N=155;const double INF=1e9+5; int n,x[N],y[N],col[N],head[N],xnt,cnt; bool b[N][N],vis[N],in[N]; double dis[N][N],c[N],fx[N],f[N],ans; struct Edge{int next,to;double w;Edge(int n=0,int t=0,double w=0):next(n),to(t),w(w) {} }edge[N*N<<1]; double calc(int i,int j) {return sqrt(1.0*(x[i]-x[j])*(x[i]-x[j])+1.0*(y[i]-y[j])*(y[i]-y[j]));} void add(int x,int y) {double tp=calc(x,y);edge[++xnt]=Edge(head[x],y,tp);head[x]=xnt;edge[++xnt]=Edge(head[y],x,tp);head[y]=xnt; } void dj(int cur,bool cs) {priority_queue<pair<double,int>,vector<pair<double,int> >,greater<pair<double,int> > > q;memset(in,0,sizeof in);for(int i=1;i<=n;i++)c[i]=INF;c[cur]=0;q.push(make_pair(0,cur));while(q.size()){int k=q.top().second;q.pop();while(in[k]&&q.size())k=q.top().second,q.pop();if(in[k])break;in[k]=1;if(cs)col[k]=cnt;fx[cur]=max(fx[cur],c[k]);for(int i=head[k],v;i;i=edge[i].next)if(c[k]+edge[i].w<c[v=edge[i].to]){c[v]=c[k]+edge[i].w;q.push(make_pair(c[v],v));}}f[col[cur]]=max(f[col[cur]],fx[cur]);//不是f[cnt] } int main() {scanf("%d",&n);for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)dis[i][j]=INF;for(int i=1;i<=n;i++)scanf("%d%d",&x[i],&y[i]);bool tp=0;for(int i=1;i<=n;i++)for(int j=1;j<=n;j++){scanf("%1d",&tp);if(tp)add(i,j);// }for(int i=1;i<=n;i++)if(!vis[i]){int cs=0;vis[i]=1;if(!col[i])cnt++,cs=1;dj(i,cs);}ans=INF;for(int i=1;i<n;i++)for(int j=i+1;j<=n;j++)if(col[i]!=col[j])ans=min(ans,max(fx[i]+fx[j]+calc(i,j),max(f[col[i]],f[col[j]])));printf("%.6lf",ans);return 0; }

?

轉(zhuǎn)載于:https://www.cnblogs.com/Narh/p/8954470.html

總結(jié)

以上是生活随笔為你收集整理的洛谷1522牛的旅行的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。