P2296 尋找道路

2022-05-01 01:00:13 字數 1098 閱讀 6801

洛谷鏈結

這個題是14年day2的第二題,也只有普及+/提高的難度。

題目大意就是在一堆滿足所有後繼連線的點都可以到達終點的點中,找到最短路徑。

思路就是先一邊dfs,求出滿足條件1的點,之後spfa就好了,其實用bfs會更快一點。

**:

1 #include2 #include3

#define n 10010

4#define m 200020

5int

next1[m],to1[m],num1,head1[n],next2[m],to2[m],num2,head2[n],vis[n],dis[n],n,m,a,b,qd,zd,flag;

6bool

boo[n],exist[n];

7void add1(int false_from,int

false_to)

12void add2(int false_from,int

false_to)

17void dfs(int

u)25

void spfa(int

x)41}42

}43}44

intmain()

51 scanf("

%d%d

",&qd,&zd);

52dfs(zd);

53if(!flag)

57for(int i=1;i<=n;++i)

58 boo[i]=1;59

for(int i=1;i<=n;i++)

60if(!vis[i])

65for(int i=1;i<=n;++i)

66 dis[i]=42000000

;67 boo[zd]=1;68

spfa(qd);

69if(dis[zd]!=42000000

)70 printf("

%d\n

",dis[zd]);

71else

72 printf("

-1\n");

73return0;

74 }

view code

P2296 尋找道路

洛谷 p2296 在有向圖g 中,每條邊的長度均為1 現給定起點和終點,請你在圖中找一條從起點到終點的路徑,該路徑滿足以下條件 1 路徑上的所有點的出邊所指向的點都直接或間接與終點連通。2 在滿足條件1 的情況下使路徑最短。注意 圖g 中可能存在重邊和自環,題目保證終點沒有出邊。請你輸出符合條件的路...

P2296 尋找道路

反著建圖,從點 include include include define ri register int using namespace std const int maxn 200020,inf 1310668019 int n,m,s,t,u maxn v maxn w maxn fst m...

P2296 尋找道路

題目鏈結啦啦啦 首先將邊反向建立,然後bfs求出答案 1 include2 using namespace std 3int read 47 while c 0 c 9 8return x y 9 10int n,m 11 vectorv 10005 12 bool cando 10005 er 1...