洛谷鏈結
這個題是14年day2的第二題,也只有普及+/提高的難度。
題目大意就是在一堆滿足所有後繼連線的點都可以到達終點的點中,找到最短路徑。
思路就是先一邊dfs,求出滿足條件1的點,之後spfa就好了,其實用bfs會更快一點。
**:
1 #include2 #include3view code#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 }
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...