bzoj 1912 巡邏 樹直徑

2022-05-09 01:57:09 字數 1420 閱讀 8149

第一行包含兩個整數 n, k(1 ≤ k ≤ 2)。接下來 n – 1行,每行兩個整數 a, b, 表示村莊a與b之間有一條道路(1 ≤ a, b ≤ n)。

輸出乙個整數,表示新建了k 條道路後能達到的最小巡邏距離。

8 1

1 2

3 1

3 4

5 3

7 5

8 5

5 6

1110%的資料中,n ≤ 1000, k = 1; 

30%的資料中,k = 1; 

80%的資料中,每個村莊相鄰的村莊數不超過 25; 

90%的資料中,每個村莊相鄰的村莊數不超過 150; 

100%的資料中,3 ≤ n ≤ 100,000, 1 ≤ k ≤ 2。

首先對於k=1的資料,yy一下就可以發現要找樹的直徑,然而對於k=2的點,相當於找兩條直徑,但是會發現,如果這兩條直徑重複了會很蛋疼,還是會重複走到,因此我們找完第乙個直徑後,直徑上面的邊全部賦值為-1,然後再找第二條直徑。

1 #include2 #include3 #include4 #include5 #include6

int tot,go[200005],first[100005],next[200005];7

int op[200005];8

int vis[100005],dis[100005],c[200005],from[100005],pre[100005];9

int d[100005],n,k,ans,mx2,val[200005

];10

void insert(int x,int y,int

z)17

void add(int x,int y,int

z)21

void bfs(int

x)35}36

}37void

pianfen1()

46void dfs(int

x)56

if (mx1+mx2>ans) ans=mx1+mx2;

57 d[x]=mx1;58}

59int

main()

66pianfen1();

67int cnt=2*(n-1)-dis[mx2]+1;68

if (k==1) return0;

69for (int i=1;i<=n;i++) vis[i]=0,d[i]=0x3f3f3f3f;70

for (int i=mx2;i!=0;i=pre[i]) val[from[i]]=-1,val[op[from[i]]]=-1

;71 ans=0

;72 dfs(1

);73

74 printf("

%d\n

",cnt-ans+1

);75 }

C 刷題 1912 親和數

如果a的因子和等於b,b的因子和等於a,且a b,則稱a,b為親密數對。比如220的所有真約數 即不是自身的約數 之和為 1 2 4 5 10 11 20 22 44 55 110 284。284的所有真約數和為 1 2 4 71 142 220。你的任務就編寫乙個程式,判斷給定的兩個數是否是親和數...

簡序《1912青年空間詩話之春》

鍾嶸 詩品序 若乃春風春鳥,秋月秋蟬,夏雲夏雨,冬月祁寒,斯四候之感諸詩者也。嘉會寄詩以親,離群託詩以怨。至於楚臣去境,漢妾辭宮 或骨橫朔野,或魂逐飛蓬 或負戈外戍,殺氣雄邊 塞客衣單,孀閨淚盡。又士有解珮出朝,一去忘返 女有揚蛾入寵,再盼傾國。凡斯種種,感蕩心靈,非陳詩何以展其義,非長歌何以騁其情...

山東理工oj 1912 IP位址(水題)

time limit 1000ms memory limit 65536k 有疑問?點這裡 2011年2月3日,國際網際網路名稱與數字位址分配機構 icann 官方宣布 全球最後一批ipv4位址分配完畢。這標誌著第一代網際網路位址的 池子 已經全空了,網際網路向ipv6過渡已經開始進入了實施階段。全...