題意:給出乙個圖,求出從1走到2共有多少種走法。前提是他只沿著滿足如下條件的道路(a,b)走:存在一條從b出發回家的路徑,比所有從a出發回家的路徑都短。
思路:首先用dijkstra演算法求出每個點到家的最短路徑,那麼題目的要求也就變成了d[b]b,這樣就是乙個dag,直接用動態規劃計數。
1 #include 2 #include 3 #include 4 #include 5 #include 6using
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條線段,這兩條線段的重疊部分...