UVa 10917 林中漫步

2022-06-20 22:06:14 字數 1112 閱讀 7155

題意:給出乙個圖,求出從1走到2共有多少種走法。前提是他只沿著滿足如下條件的道路(a,b)走:存在一條從b出發回家的路徑,比所有從a出發回家的路徑都短。

思路:首先用dijkstra演算法求出每個點到家的最短路徑,那麼題目的要求也就變成了d[b]b,這樣就是乙個dag,直接用動態規劃計數。

1 #include 2 #include 3 #include 4 #include 5 #include 6

using

namespace

std;78

const

int maxn = 1000 + 5;9

const

int inf = 0x3f3f3f3f;10

11int

n, m;

1213

struct

edge

1417

};18

19struct

heapnode

2023

bool

operator

< (const heapnode& rhs) const

2427

};28

29struct

dijkstra

3046

47void addedge(int

from, int to, int

dist)

4853

54void dijkstra(int

s)5577}

78}79}

8081

int dp(int

s)82

91return

dp[s];92}

93}t;

9495

intmain()

96109 t.dijkstra(1

);110 memset(t.dp, -1, sizeof

(t.dp));

111 t.dp(0

);112 printf("

%d\n

", t.dp[0

]);113

}114

return0;

115 }

1091 線段的重疊

x軸上有n條線段,每條線段包括1個起點和終點。線段的重疊是這樣來算的,10 20 和 12 25 的重疊部分為 12 20 給出n條線段的起點和終點,從中選出2條線段,這兩條線段的重疊部分是最長的。輸出這個最長的距離。如果沒有重疊,輸出0。input 第1行 線段的數量n 2 n 50000 第2 ...

1091 線段的重疊

x軸上有n條線段,每條線段包括1個起點和終點。線段的重疊是這樣來算的,10 20 和 12 25 的重疊部分為 12 20 給出n條線段的起點和終點,從中選出2條線段,這兩條線段的重疊部分是最長的。輸出這個最長的距離。如果沒有重疊,輸出0。收起第1行 線段的數量n 2 n 50000 第2 n 1行...

1091 線段的重疊

1091 線段的重疊 基準時間限制 1 秒 空間限制 131072 kb 分值 5 難度 1級演算法題 收藏關注x軸上有n條線段,每條線段包括1個起點和終點。線段的重疊是這樣來算的,10 20 和 12 25 的重疊部分為 12 20 給出n條線段的起點和終點,從中選出2條線段,這兩條線段的重疊部分...