锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 鍦ㄤ竴涓及錛革及鐨勬湁鍚戝浘涓紝璺緞瑕嗙洊灝辨槸鍦ㄥ浘涓壘涓浜涜礬緇忥紝浣夸箣瑕嗙洊浜嗗浘涓殑鎵鏈夐《鐐癸紝涓斾換浣曚竴涓《鐐規湁涓斿彧鏈変竴鏉¤礬寰勪笌涔嬪叧鑱旓紱錛堝鏋滄妸榪欎簺璺緞涓殑姣忔潯璺緞浠庡畠鐨勮搗濮嬬偣璧板埌瀹冪殑緇堢偣錛岄偅涔堟伆濂藉彲浠ョ粡榪囧浘涓殑姣忎釜欏剁偣涓嬈′笖浠呬竴嬈★級錛涘鏋滀笉鑰冭檻鍥句腑瀛樺湪鍥炶礬錛岄偅涔堟瘡姣忔潯璺緞灝辨槸涓涓急榪為氬瓙闆嗭紟 鐢變笂闈㈠彲浠ュ緱鍑猴細 錛?涓涓崟鐙殑欏剁偣鏄竴鏉¤礬寰勶紱 錛掞紟濡傛灉瀛樺湪涓璺緞p1,p2,......pk錛屽叾涓璸1 涓鴻搗鐐癸紝pk涓虹粓鐐癸紝閭d箞鍦ㄨ鐩栧浘涓紝欏剁偣p1,p2,......pk涓嶅啀涓庡叾瀹冪殑欏剁偣涔嬮棿瀛樺湪鏈夊悜杈癸紟 鏈灝忚礬寰勮鐩?/font>灝辨槸鎵懼嚭鏈灝忕殑璺緞鏉℃暟錛屼嬌涔嬫垚涓猴及鐨勪竴涓礬寰勮鐩栵紟 璺緞瑕嗙洊涓庝簩鍒嗗浘鍖歸厤鐨勫叧緋伙細 鏈灝忚礬寰勮鐩栵紳锝滐及锝滐紞鏈澶у尮閰嶆暟錛?/font> 鍏朵腑鏈澶у尮閰嶆暟鐨勬眰娉曟槸鎶婏及涓殑姣忎釜欏剁偣pi鍒嗘垚涓や釜欏剁偣pi'涓巔i''錛屽鏋滃湪p涓瓨鍦ㄤ竴鏉i鍒皃j鐨勮竟錛岄偅涔堝湪浜屽垎鍥撅及錛囦腑灝辨湁涓鏉¤繛鎺i'涓巔j''鐨勬棤鍚戣竟錛涜繖閲宲i' 灝辨槸p涓璸i鐨勫嚭杈癸紝pj''灝辨槸p涓璸j 鐨勪竴鏉″叆杈癸紱 瀵逛簬鍏紡錛?font color="#ff0000">鏈灝忚礬寰勮鐩栵紳锝滐及锝滐紞鏈澶у尮閰嶆暟錛涘彲浠ヨ繖涔堟潵鐞嗚В錛?/font> 濡傛灉鍖歸厤鏁頒負闆訛紝閭d箞錛頒腑涓嶅瓨鍦ㄦ湁鍚戣竟錛屼簬鏄樉鐒舵湁錛?/font> 鏈灝忚礬寰勮鐩栵紳锝滐及锝滐紞鏈澶у尮閰嶆暟錛濓綔錛幫綔錛嶏紣錛濓綔錛幫綔錛涘嵆錛扮殑鏈灝忚礬寰勮鐩栨暟涓猴綔錛幫綔錛?/font> 錛幫紘涓笉鍦ㄤ簬鍖歸厤杈規椂錛岃礬寰勮鐩栨暟涓猴綔錛幫綔錛?/font> 濡傛灉鍦及錛囦腑澧炲姞涓鏉″尮閰嶈竟pi'錛嶏紞錛瀙j''錛岄偅涔堝湪鍥綪鐨勮礬寰勮鐩栦腑灝卞瓨鍦ㄤ竴鏉$敱pi榪炴帴pj鐨勮竟錛屼篃灝辨槸璇磒i涓巔j 鍦ㄤ竴鏉¤礬寰勪笂錛屼簬鏄礬寰勮鐩栨暟灝卞彲浠ュ噺灝戜竴涓紱 濡傛緇х畫澧炲姞鍖歸厤杈癸紝姣忓鍔犱竴鏉★紝璺緞瑕嗙洊鏁板氨鍑忓皯涓鏉★紱鐩村埌鍖歸厤杈逛笉鑳界戶緇鍔犳椂錛岃礬寰勮鐩栨暟涔熶笉
鑳藉啀鍑忓皯浜嗭紝姝ゆ椂灝辨湁浜嗗墠闈㈢殑鍏紡錛涗絾鏄繖閲屽彧
鏄璇濅簡姣忔潯鍖歸厤杈瑰搴斾簬璺緞瑕嗙洊涓殑涓鏉¤礬寰勪笂鐨勪竴鏉¤繛鎺ヤ袱涓偣涔嬮棿鐨勬湁鍚戣竟錛涗笅闈㈡潵璇存槑涓涓礬寰勮鐩栦腑鐨勬瘡鏉¤繛鎺ヤ袱涓《鐐逛箣闂寸殑鏈夊悜杈瑰搴斾簬涓鏉″尮閰?
杈癸紱 涓庡墠闈㈢被浼鹼紝瀵逛簬璺緞瑕嗙洊涓殑姣忔潯榪炴帴涓や釜欏剁偣涔嬮棿鐨勬瘡鏉℃湁鍚戣竟pi--->pj錛屾垜浠彲浠ュ湪
鍖歸厤鍥句腑瀵瑰簲鍋氫竴鏉¤繛鎺i'涓巔j''鐨勮竟錛?
鏄劇劧榪欐牱鍋氬嚭鏉ュ浘鐨勬槸涓涓尮閰嶅浘錛堣繖涓鐐圭敤鍙嶈瘉娉曞緢瀹規槗璇佹槑錛屽鏋滃緱鍒扮殑鍥句笉鏄竴涓尮閰嶅浘錛岄偅涔堣繖涓浘涓繀瀹氬瓨鍦ㄨ繖鏍蜂袱鏉¤竟 pi'---pj'' 鍙?pi' ----pk''錛岋紙j!=k錛夛紝閭d箞鍦ㄨ礬寰勮鐩栧浘涓氨瀛樺湪浜嗕袱鏉?/font>杈筽i-->pj, pi--->pk 錛岄偅杈逛粠pi鍑哄彂鐨勮礬寰勫氨涓嶆涓鏉′簡錛岃繖涓庤礬寰勮鐩栧浘鏄煕鐩劇殑錛涜繕鏈夊彟澶栦竴縐嶆儏鍐靛氨鏄瓨鍦╬i'---pj'',pk'---pj''錛岃繖縐嶆儏鍐典篃綾諱技鍙瘉錛夛紱 鑷蟲錛屽氨璇存槑浜嗗尮閰嶈竟涓庤礬寰勮鐩栧浘涓繛鎺ヤ袱欏剁偣涔嬮棿杈圭殑涓涓瀵瑰簲鍏崇郴錛岄偅涔堜篃灝辮鏄庝簡鍓嶉潰鐨勫叕寮忔垚绔嬶紒
鍏堜婦涓涓鐩殑渚嬪瓙錛歱oj1201. 榪欎釜棰樼洰杞寲涓烘垜浠殑宸垎綰︽潫緋葷粺濡備笅錛?br>
濡傛灉i∈S錛屽垯t[i]=1錛屽惁鍒檛[i]=0銆傚彟s[i] = 鈭憈[j] (j = 0 ~ i)錛岃繖鏍峰瓙錛岄鐩殑鏉′歡灝卞彲浠ョ敤涓嬮潰鐨勫紡瀛愯〃紺猴細 鐒跺悗鎴戜滑浠嬬粛瑙e喅宸垎綰︽潫闂鐨勬柟娉曪細Bellman-Ford綆楁硶錛屾槸涓嶆槸寰堢濂囧憿錛熸病閿欙紝宸垎綰︽潫緋葷粺鍙互閫氳繃杞崲鎴愬浘璁烘渶鐭礬闂鏉ヨВ鍐籌細 鏈夌殑鍚屽瑕侀棶浜嗭細鏃犺В鎬庝箞鍔炲晩錛熷緢綆鍗曪紝浣犲皢浼氬彂鐜癇ellman-Ford綆楁硶濡傛灉鎵懼嚭浜?#8221;璐熸潈鍥炶礬”錛岄偅涔堣緋葷粺鏃犺В銆傚彧瑕佺郴緇熸棤瑙o紝灝卞繀鐒跺瓨鍦?#8221;璐熸潈鍦?#8221;銆?br>
閭d箞濡傛灉姹俿[n] - s[-1]鐨勬渶灝忓煎憿錛熷叾瀹炲拰涓婇潰鐨勬柟娉曠被浼間簡錛屽ぇ瀹跺彲浠ヨ嚜宸辨帹瀵間竴涓嬨傝屼笖鏈夊緢澶氶棶棰樹粎浠呰浣犵粰鍑烘槸鍚︽湁瑙g殑鍒ゆ柇錛岄偅灝變笉瑕佹兂閭d箞澶氫簡銆?/p>
瀹為檯涓婃槸姹傛渶闀胯礬錛屽叾瀹炲氨鏄妸鏉懼紱鎿嶄綔鐨勭鍙鋒敼鍙樺嵆鍙?/p>
鍏跺疄姝ら鍙互鐢╯pfa瀹炵幇錛屾晥鐜囧緢楂?/p>
寮濮嬪仛姝ら鏃?/p>
榪炵畫瓚呮椂寰堜箙 姝ら姣忔瑕佽繘琛屼笁嬈℃澗寮涙搷浣?/p>
瓚呮椂 絎簩嬈″垎寮 浠嶇劧瓚呮椂 絎笁嬈?/p>
鏀瑰彉鏉懼紱鐨勯『搴?/p>
鍗崇涓変釜鏉懼紱浠庝笂鍒頒笅錛堜箣鍓嶆槸浠庝笅鍒頒笂錛?/p>
榪欐牱鍋氱殑鐩殑灝辨槸閬垮厤浜嗛噸澶嶇殑鏉懼紱鎿嶄綔錛?br>
3 #include<iostream>
4 using namespace std;
5 int in[100];
6 int hash[1000];
7 bool visit[1000];
8 int main()
9 {
10 int a,b,cas=1;
11 while(scanf("%d%d",&a,&b)&&a>=0&&b>=0)
12 {
13 memset(visit,0,sizeof(visit));
14 memset(hash,0,sizeof(hash));
15 memset(in,0,sizeof(in));
16 if(a==0&&b==0)
17 {
18 printf("Case %d is a tree.\n",cas++);
19 continue;
20 }
21 int m=1;
22 hash[++hash[0]]=a;
23 visit[a]=visit[b]=1;
24 hash[++hash[0]]=b;
25 in[b]++;
26 bool flag=0;
27 while(scanf("%d%d",&a,&b)&&a&&b)
28 {
29 ++m;
30 if(!visit[a])
31 hash[++hash[0]]=a;
32 if(!visit[b])
33 hash[++hash[0]]=b;
34 visit[a]=visit[b]=1;
35 if(++in[b]>1)
36 {
37 flag=1;
38 printf("Case %d is not a tree.\n",cas++);
39 }
40 }
41 if(flag)continue;
42 else
43 {
44 if(hash[0]-1!=m)
45 {
46 printf("Case %d is not a tree.\n",cas++);
47 continue;
48 }
49 int root;
50 bool flag=1;
51 for(int i=1;i<=hash[0];++i)
52 if(in[hash[i]]==0)
53 {
54 flag=0;
55 root=i;
56 break;
57 }
58 if(flag)
59 {
60 printf("Case %d is not a tree.\n",cas++);
61 continue;
62 }
63 for(int i=1;i<=hash[0];++i)
64 if(i!=root&&in[hash[i]]!=1)
65 {
66 printf("Case %d is not a tree.\n",cas++);
67 continue;
68 }
69 printf("Case %d is a tree.\n",cas++);
70 }
71 }
72 return 0;
73 }
]]>
澧炲姞榪炰釜浜岀淮鏁扮粍
涓涓〃紺轟粠璧風偣鍒板綋鍓嶇偣鎵闇鐨勯儴鏁?br>鍙︿竴涓〃紺哄埌杈懼綋鍓嶇殑鏈灝忚礬寰勬暟
濡傛灉
褰撳墠鐐規鏁?1==涓嬩釜鐐圭殑姝ユ暟
閭d箞涓嬩釜鐐圭殑鏈灝忚礬寰勬暟+=褰撳墠鐐圭殑鏈灝忚礬寰勬暟
榪欐牱鍋氬氨涓嶄細瓚呮椂浜嗭紝閫熷害寰堝揩
]]>
2 using namespace std;
3 int n,m;
4 int map[250][250];
5 bool visit[500];
6 int l[500];//閭繪帴鐐?/span>
7 bool find(int a)
8 {
9 for(int i=1;i<=n;++i)
10 if(map[2*a][2*i-1]&&!visit[2*i-1])
11 {
12 visit[2*i-1]=1;
13 if(!l[2*i-1]||find(l[2*i-1]))
14 {
15 l[2*i-1]=a;
16 return true;
17 }
18 }
19 return false;
20 }
21 int main()
22 {
23 int cas,a,b;
24 scanf("%d",&cas);
25 for(int i=1;i<=cas;++i)
26 {
27 memset(l,0,sizeof(l));
28 memset(map,0,sizeof(map));
29 scanf("%d%d",&n,&m);
30 //鎶婅妭鐐瑰垎鎴愪袱涓妭鐐癸紝2*i鏄嚭鑺傜偣,2*i-1鏄鑺傜偣
31 for(int j=1;j<=m;++j)
32 {
33 scanf("%d%d",&a,&b);
34 map[2*a][2*b-1]=1;
35 }
36 int ans=0;
37 for(int i=1;i<=n;++i)
38 {
39 memset(visit,0,sizeof(visit));
40 if(find(i))ans++;
41 }
42 printf("%d\n",n-ans);
43 }
44 return 0;
45 }
]]>
棰樼洰澶ф剰鏄紝鏈変竴涓泦鍚圫銆傚凡鐭ュ叾婊¤凍浠ヤ笅涓浜涙潯浠訛細
瀵逛簬緇欏嚭鐨刵緇?a[i] b[i] c[i]錛屾湁浠巃[i]~b[i]榪欒繛緇殑k涓暣鏁頒腑錛岃嚦灝戞湁c[i]涓湪闆嗗悎S鍐呫傛眰S鏈灝戠殑鍏冪礌涓暟銆?/p>
s[b[i]] - s[a[i]-1] ≥ c[i]
s[i] - s[i+1] ≥ -1
s[i+1] - s[i] ≥ 0
娉ㄦ剰鍚庨潰涓や釜寮忓瓙鏄痵鍏堝ぉ鐨勬ц川銆?br>
鎴戜滑瑕佹眰鐨勫氨鏄痵[n] - s[-1]鐨勬渶灝忓鹼紙鍥犱負棰樼洰閮芥槸闈炶礋鐨勫槢錛夈?
娉ㄦ剰鍒版渶鐭礬綆楁硶鐨勬澗寮涙搷浣滐細if (d[j] > d[i] + w[i][j]) d[j] = d[i] + w[i][j]銆?br>
榪欏叾涓殑涓夎褰笉絳夊紡錛歞[j] ≤ d[i] + w[i][j]綆鍗曞彉褰㈠氨鎴愪簡d[i] - d[j] >=
-w[i][j]銆傝繖鏍峰氨鍥懼艦鐨勬渶鐭礬灝辯淮鎶や簡涓涓笉絳夊紡緇勩傛墍浠ワ紝鎴戜滑鍙互寤虹珛涓涓浘錛氬浜庢瘡涓涓笉絳夊紡s[i] - s[j] >=
c錛屽氨浠巎榪炰竴鏉℃寚鍚慽鐨勮竟錛屽叾涓竟鐨勬潈鍊糲錛岃繖鏍鋒眰涓涓渶闀胯礬錛屽氨鏄痙[n] - d[-1]灝辨槸s[n] -
s[-1]鐨勬渶灝忓間簡錛屼笖瀵瑰簲鐨勬柟妗堝氨鏄痵[i] = d[i]銆?/p>
2 {
3 if(d[j]!=INT_MIN&&d[j]>d[j+1])
4 {
5 d[j+1]=d[j];
6 update=0;
7 }
8 }
9 for(int j=Max;j>Min;--j)
10 {
11 if(d[j]!=INT_MIN&&d[j]-1>d[j-1])
12 {
13 update=0;
14 d[j-1]=d[j]-1;
15 }
16 }
2 using namespace std;
3 struct Edge
4 {
5 int x,y,d;
6 }edge[50000+5];
7 int n;
8 int d[50000+5];
9 int main()
10 {
11 while(scanf("%d",&n)!=EOF)
12 {
13 int Min=INT_MAX;
14 int Max=INT_MIN;
15 for(int i=0;i<n;++i)
16 {
17 scanf("%d%d%d",&edge[i].x,&edge[i].y,&edge[i].d);
18 if(--edge[i].x<Min)Min=edge[i].x;
19 if(edge[i].y>Max)Max=edge[i].y;
20 }
21 int tmp=Max-Min+1;
22 for(int i=Min;i<=Max;++i)
23 d[i]=INT_MIN;
24 d[Min]=0;
25 for(int i=0;i<tmp;++i)
26 {
27 bool update=1;
28 for(int j=0;j<n;++j)
29 {
30 if(d[edge[j].x]!=INT_MIN&&d[edge[j].y]<d[edge[j].x]+edge[j].d)
31 {
32 update=0;
33 d[edge[j].y]=d[edge[j].x]+edge[j].d;
34 }
35 }
36 for(int j=Min;j<Max;++j)
37 {
38 if(d[j]!=INT_MIN&&d[j]>d[j+1])
39 {
40 d[j+1]=d[j];
41 update=0;
42 }
43 }
44 for(int j=Max;j>Min;--j)
45 {
46 if(d[j]!=INT_MIN&&d[j]-1>d[j-1])
47 {
48 update=0;
49 d[j-1]=d[j]-1;
50 }
51 }
52 if(update)break;
53 }
54 printf("%d\n",d[Max]-d[Min]);
55 }
56 return 0;
57 }
浠ヤ笅鐨勮祴鍊兼柟寮忔槸涓嶆紜殑錛?/span>
memset(arr,2147483647,sizeof(arr));
浣嗘槸鍙互鐢ㄤ竴浜涙妧宸э紝鏉ュ緱鍒頒竴涓樊涓嶅鐨勬渶澶у鹼紝姣斿鍍忥細
memset(arr,0x7F,sizeof(arr));
瀹冨皢arr涓殑鍊煎叏閮ㄨ祴涓?/span>2139062143
榪欐槸鐢?/span>memset瀵?/span>int璧嬪兼墍鑳借揪鍒扮殑鏈澶у?/span>
綾諱技鐨勮繕鏈夛細
memset(arr,0x80,sizeof(arr)); //set int to -2139062144
memset(arr,0x7F,sizeof(arr)); //set double to 1.38242e+306
memset(arr,0xFE,sizeof(arr)); //set double to -5.31401e+303