第一行包含兩個整數 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 #include6int 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過渡已經開始進入了實施階段。全...