欧美1区2区3区激情无套,两个女人互添下身视频在线观看,久久av无码精品人妻系列,久久精品噜噜噜成人,末发育娇小性色xxxx

題解 | Greg and Graph

Greg and Graph:原題鏈接

題意:

     給你一個(gè)有權(quán)有向圖,圖包含n個(gè)點(diǎn),接下來(lái)會(huì)操作n次,逐漸刪除這n個(gè)點(diǎn),并將與該點(diǎn)相關(guān)的所有邊刪除,求輸出操作之前圖中的所有最短路徑的和。

題目思路:

     通過(guò)題意求所有最短路徑的和,可得用Floyd算法去求解。本題主要難點(diǎn)在于如何去解決刪點(diǎn)并計(jì)算每個(gè)時(shí)段的最短路徑和。      為解決上述問(wèn)題,可以扭轉(zhuǎn)思維,將刪點(diǎn)該為加點(diǎn)的形式,完成Floyd的改變,核心代碼如下:

void floyd(){
	//將原先的刪除編號(hào)數(shù)組倒序輸出
	//改為對(duì)圖像進(jìn)行加點(diǎn) 
	for (int k=n;k>=1;k--)
	{
		//x為加的點(diǎn) 
		long long x=a[k];
		//利用vis記錄判斷點(diǎn)是否加入
		//標(biāo)記為1的點(diǎn)為以加入的點(diǎn) 
		vis[x]=1;
		for (int i=1;i<=n;i++)
		{
			for (int j=1;j<=n;j++)
			{
				//跳過(guò)i,j相等的情況 
				if (i==j)continue;
				//與能將所有點(diǎn)當(dāng)做跳板的原 Floyd算法不同
				//因?yàn)槲覀兪羌尤朦c(diǎn),所以將加入的點(diǎn)當(dāng)做跳板,即滿足遍歷所有點(diǎn),也完成加點(diǎn),十分巧妙的構(gòu)思 
				mp[i][j]=min(mp[i][j],mp[i][x]+mp[x][j]);
				//只有當(dāng)i,j的編號(hào)加入圖后,才可以加入路徑和。
				//利用ans數(shù)組記錄每個(gè)時(shí)刻的路徑和 
				if (vis[i] && vis[j])ans[k]+=mp[i][j];
			}
		}
	}
	return ;
}

     在理解完核心代碼后,基本就能得出AC代碼了。

     以下是AC代碼:

#include <bits/stdc++.h>
using namespace std;

const int N=1e3,inf=0x3f3f3f3f;
long long n;
long long a[N*N],vis[N*N],ans[N*N],mp[N][N];

void floyd(){
	//將原先的刪除編號(hào)數(shù)組倒序輸出
	//改為對(duì)圖像進(jìn)行加點(diǎn) 
	for (int k=n;k>=1;k--)
	{
		//x為加的點(diǎn) 
		long long x=a[k];
		//利用vis記錄判斷點(diǎn)是否加入
		//標(biāo)記為1的點(diǎn)為以加入的點(diǎn) 
		vis[x]=1;
		for (int i=1;i<=n;i++)
		{
			for (int j=1;j<=n;j++)
			{
				//跳過(guò)i,j相等的情況 
				if (i==j)continue;
				//與能將所有點(diǎn)當(dāng)做跳板的原 Floyd算法不同
				//因?yàn)閷⑽覀兪羌尤朦c(diǎn),所以將加入的點(diǎn)當(dāng)做跳板,即滿足遍歷所有點(diǎn),也完成加點(diǎn),十分巧妙的構(gòu)思 
				mp[i][j]=min(mp[i][j],mp[i][x]+mp[x][j]);
				//只有當(dāng)i,j的編號(hào)加入圖后,才可以加入路徑和。
				//利用ans數(shù)組記錄每個(gè)時(shí)刻的路徑和 
				if (vis[i] && vis[j])ans[k]+=mp[i][j];
			}
		}
	}
	return ;
}


int main(){
	cin >>n;
	//讀入各點(diǎn) 
	for (int i=1;i<=n;i++)
	{
		for (int j=1;j<=n;j++)cin >>mp[i][j];
	}
    //讀入刪點(diǎn)編號(hào)
	for (int i=1;i<=n;i++)cin >>a[i];
	floyd();
	//雖然我們?cè)仁堑剐蜉斎?,但ans記錄的已經(jīng)是倒序時(shí)的路徑和,所以正序輸出即可 
	for (int i=1;i<=n;i++)cout <<ans[i]<<' ';
	cout <<"\n";
} 
全部評(píng)論

相關(guān)推薦

面試應(yīng)該反問(wèn)什么,想必你一定搜過(guò)相關(guān)經(jīng)驗(yàn)教程!給大家說(shuō)說(shuō)不同的面試場(chǎng)景應(yīng)該如何反問(wèn)一、業(yè)務(wù)面什么叫做業(yè)務(wù)面?就是問(wèn)你八股、問(wèn)你項(xiàng)目、問(wèn)你實(shí)現(xiàn)等等關(guān)于業(yè)務(wù)相關(guān)的問(wèn)題面試,這就是業(yè)務(wù)面,因此在業(yè)務(wù)面反問(wèn)時(shí)千萬(wàn)不要問(wèn)?:“工資多少錢?”“上下班時(shí)間”等等問(wèn)題,這些還是留著和HR進(jìn)行溝通,業(yè)務(wù)面最好問(wèn)業(yè)務(wù)相關(guān)問(wèn)題,顯得你對(duì)業(yè)務(wù)很感興趣,提升面試通過(guò)率?我加入團(tuán)隊(duì)之后,主要會(huì)做哪些事情?業(yè)務(wù)目標(biāo)是什么?我想了解一下團(tuán)隊(duì)核心的業(yè)務(wù)目標(biāo)是什么?你認(rèn)為這個(gè)目標(biāo)今年在完成情況上會(huì)存在哪些挑戰(zhàn)?想了解一下你對(duì)于這個(gè)崗位的產(chǎn)出預(yù)期是怎樣的?希望這個(gè)崗位的能力模型是怎樣的?在剛才&nbsp;面試過(guò)程中,你覺(jué)得我匹配度是怎樣的?...
nxxxn:oi老登,吾與牛馬孰卷
點(diǎn)贊 評(píng)論 收藏
分享
想熬夜的小飛象在秋招:被騰訊掛了后爸媽以為我失聯(lián)了
點(diǎn)贊 評(píng)論 收藏
分享
評(píng)論
1
收藏
分享

創(chuàng)作者周榜

更多
正在熱議
更多
??途W(wǎng)
牛客企業(yè)服務(wù)