選舉越來越近了,所以**amabo kcarab準備在美國計畫一次旅行,並在wdc和la進行演講。特務為了能夠保護**的安全,需要時刻監控所有**會經過的城市(包括wdc和la)。
當然,為了使預算不會太大,**不會用到af1,而會用汽車作為交通工具。並且,特務計畫在**從wdc到la和回到wdc的旅途中安排盡可能少的需要監控的城市數目。
對於這個問題,我們假設美國有n(n<=100)個城市,標號為1到n,和m(m<=200)條單向的連線兩個不同城市的州際公路。wdc的編號為1,la的編號為2。
寫乙個程式計算出最少需要被監控的城市,使得有一條路只經過被監控的城市,可以從wdc到la,最後回到wdc。
智商下降招來殺身之禍暫來機房躲避順便更新一下
好的這道題目非常經典但是不是很好做
第乙個做法是直接dfs,因為可以通過floyd求出上界來進行最優性剪枝,對於這個範圍可以快速通過
但是這樣不保險,我們還是考慮一下正經的做法
首先跑出dis[i][j]表示i到j的最短路長度,直接floyd
考慮用dp,設f[i][j]表示從j出發去到1,再從1到i所需的最少被監控的城
市數量,顯然f[1][1]=1,f[2][2]就是答案
運用類似dijkstra的做法,我們可以得到f的轉移方程(用優先佇列進行轉移)
f[j][i]+dis[j][i]-1=>f[i][j] (i≠j)
f[i][j]+1=>f[v][j] ( i->v
∈g且v≠j )
f[i][j]+1=>f[i][v] ( j->v∈~g且v≠i )
f[i][j]=>f[i][i] ( j->i
∈~g )
f[i][j]=>f[j][j] ( i->j∈g )
其中g是原圖,~g是反圖
後面四個應該比較好理解,至於第乙個式子,可以理解為:
f[j][i]表示i->1->j,那麼再加上dis[i][j]就可以成為j->i->1->j->i,這個路徑上除了j->i這一段是新增的其他應該和i->1->j相等,而j->i的點數即為dis[j][i]
讓後直接跑dijkstra即可
#pragma gcc opitmize("o3")
#pragma g++ opitmize("o3")
#include
#include
#include
#include
#define n 110
using
namespace
std;
struct node t;
struct edge g[n<<2];
int f[n][n],g[n][n],h[n],h2[n],n,m,cnt=0;
inline
bool gmin(int& x,int y)
inline
bool
operator
< (node a,node b)
inline
void adj(int x,int y); h[x]=cnt;
g[++cnt]=(edge); h2[y]=cnt;
}int main()
for(int k=1;k<=n;++k)
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)
f[i][j]=min(f[i][j],f[i][k]+f[k][j]);
priority_queueq;
g[1][1]=1; q.push((node));
for(int x,y;!q.empty();));
for(int v,i=h2[y];i;i=g[i].nt)
if(gmin(g[x][v=g[i].v],g[x][y]+(g[i].v!=x))) q.push((node));
} printf("%d",g[2][2]);
}
Web站點安全監控
阿里雲大學課程 web站點安全監控 課程介紹 web站點安全監控認證旨在幫助學員了解乙個典型的web站點的監控需求與目標,課程對比了採用傳統方法實現站點監控的方式與優缺點,幫助學員快速掌握阿里雲的雲監控以及雲監控的主要功能。通過學習雲監控的站點級監控 主機級監控 自定義監控等功能對乙個web站點進行...
伺服器安全,埠監控
一 遠端桌面3389的修改 在windwos2003系統中,修改遠端桌面應用程式的埠,目的是為了防止黑客利用該埠進行攻擊,降低伺服器被攻擊的可能性。方式如下 1.啟動登錄檔編輯器 regedt32.exe 2.在登錄檔中找到下面的項 hkey local machine system current...
企業安全監控工作之惑
資訊保安是什麼?安全監控是什麼?安全監控工作人員要幹什麼?1 soc平台 在兩家央企擔任安全工程師3年了,企業綜合安全管理平台建設都面臨著很奇怪的問題。其中最令人感到難過的就是國內soc廠商的不給力。國內幾大安全廠商都在努力的做soc產品,然而,各種soc產品均存在著不同程度的問題。主要原因還是產品...