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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

NOIP2012 模拟试题二 腾讯大战360

發(fā)布時(shí)間:2023/12/20 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 NOIP2012 模拟试题二 腾讯大战360 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

題目:

NOIP2012 模擬試題二 騰訊大戰(zhàn)360

題意:

馬化騰和周鴻祎吃飽了撐了!他們兩個(gè)又想搞事情。沒事就要干架,但腦子又不好使兒,只能拜托我們求出怎么才能使他們要走的距離最短。

分析:

這題明顯是最短路的題目,用Floyd鐵定ACTLE。最理想的方法肯定是spfa算法,但因?yàn)閿?shù)據(jù)夠水小編人品好,所以dij也是可以的。

AC后感想:

前30分鐘,一直錯(cuò)得迷迷糊糊,后來才發(fā)現(xiàn),他們兩位大佬可以一起走,所以要dij兩次。改正后,AC了!
小編絕對(duì)不會(huì)告訴你們這道題直接輸出:"Peace!"可以對(duì)6個(gè)點(diǎn)!

代碼:

#include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> #define LL long long using namespace std; inline LL read() {LL a=0,f=1;char s=getchar();while(s<'0'||s>'9') {if(s=='-') f=-1;s=getchar();}while(s>='0'&&s<='9') {a=a*10+s-'0';s=getchar();}return a*f; } int maxd,t[5001][5001],p[5001],p1[5001],z[5001],ans1,ans2,mina; int min(int x,int y) {return x>y? y:x; } int max(int x,int y) {return x>y? x:y; } int main() {int n,m,a,b;n=read();m=read();for(int i=1;i<=5000;i++)//初始化{for(int j=1;j<=5000;j++)t[i][j]=117901065;t[i][i]=0;}for(int i=1;i<=m;i++){a=read();b=read();t[a][b]=t[b][a]=read();//雙向邊maxd=max(max(a,b),maxd);//求出最大的點(diǎn)數(shù)}a=read();b=read();//dij初始化for(int i=1;i<=maxd;i++) p[i]=t[a][i];z[a]=1;int l;for(int i=1;i<=maxd-1;i++)//第一次dij{l=117901065;int k=0;for(int j=1;j<=maxd;j++)if(z[j]==0&&p[j]<l) l=p[j],k=j;if(k==0) break;z[k]=1;for(int j=1;j<=maxd;j++)p[j]=min(p[j],p[k]+t[k][j]);}//dij初始化for(int i=1;i<=maxd;i++) p1[i]=t[b][i];for(int i=1;i<=maxd;i++) z[i]=0;z[b]=1;for(int i=1;i<=maxd-1;i++)//第二次{l=117901065;int k=0;for(int j=1;j<=maxd;j++)if(z[j]==0&&p1[j]<l) l=p1[j],k=j;if(k==0) break;z[k]=1;for(int j=1;j<=maxd;j++)p1[j]=min(p1[j],p1[k]+t[k][j]);}mina=117901065;for(int i=1;i<=maxd;i++)//枚舉兩次dij所求出的值的和{ans1=p[i];ans2=p1[i];mina=min(max(ans1,ans2),mina);//求這兩者間耗時(shí)最長的那一個(gè),與其他中最短的}if(mina!=117901065) printf("%d",mina);//如果可以相遇else printf("Peace!");fclose(stdin);fclose(stdout);return 0; }

總結(jié)

以上是生活随笔為你收集整理的NOIP2012 模拟试题二 腾讯大战360的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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