51nod 1326 遙遠的旅途 最短路

2022-09-01 09:24:12 字數 1309 閱讀 9313

給出一張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。那麼...