給出一張n
n個點m
m條邊的無向圖,詢問是否有一條從1到n
n的路徑的距離為tt。
2≤n≤
50,1≤
m≤50,
1≤t≤
10182
≤n≤5
0,1≤
m≤50
,1≤t
≤101
8我們列舉連線n
n的每乙個點x
x,那麼由於t
t很大,答案一定是到達n
n後,走路徑(x,
n)2k
(x,n
)2k次(k∈n
k∈n)。
所以我們以2×(
x,n)
2×(x
,n)的距離為模數p
p,跑一下1→n
1→n的同餘最短路。如果dis
[n][
tmod
p]≤t
dis[
n][t
modp
]≤t,那麼就存在一條長度為t
t的路徑。
#include
#include
#include
#include
#define mp(x,y,z) make_pair(x,make_pair(y,z))
using
namespace std;
typedef
long
long ll;
const
int n=
110,m=
20010
;const ll inf=
1e15
;int t,n,m,tot,head[n]
;ll t,dis[n]
[m];
bool flag,vis[n]
[m];
struct edge
e[m*n]
;void
add(
int from,
int to,
int dis)
void
dij(
int mod)}}
}int
main()
for(
int i=head[n]
;~i;i=e[i]
.next)}if
(flag)
printf
("possible\n");
else
printf
("impossible\n");
}return0;
}
51nod1326 遙遠的旅途
給你乙個n個點m條邊的無向圖,每條邊有正整數的邊權,問是否存在一條0到n 1的長度為t的路徑 點和邊可以重複 n,m 50 邊權不超過10000 t 1018 資料組數不超過3 這道題有點考思維啊!考慮這樣的一條路徑。如果不是簡單路徑,它可能會包括若干個環。如果我確定了乙個必須走的環,假設它的長度為...
51nod1326 遙遠的旅途
一張有n個點,m條變的無向圖,每條邊有邊權。在0時刻有乙個人在點1,每一次他走過一條邊,消耗的時間為這條邊的邊權,而不能停留在原地。現在他想知道是否存在一種方案使得他在t時刻剛好到達點n。多組資料,case 3,2 n 50,1 m 50,1 t 10 18 上上週做gdoi組時worldwide ...
51 Nod 1326 遙遠的旅途
例如樣例中小鹿的行程可以是0 1 2 0 2.這題長得很像乙個完全揹包,但是是在乙個圖上面的。因為一條邊很可能會重複走,那麼連向n的邊肯定有一條至少走一次,所以與n相連的邊的重複可能性最大。其他有重複也沒有關係,下面會講 我們考慮在走到n之後,然後在與n連線的一條邊上不斷地折返,最後時間到達t。那麼...