演算法運用的是floyd-warshall
實際在電腦上測試比較小的數字也沒問題
但只有一分,後面兩題產生立即終止訊號
想知道問題出在哪裡
#include<iostream>
using namespace std;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int n, m;
while(cin>>n>>m) {
bool a[n+1][n+1];
for(int j = 0; j <= n; j++)
for(int k = 0; k <= n; k++)
a[j][k] = 0;
for(int i = 0; i < m; i++) {
int t1, t2;
cin>>t1>>t2;
a[t1][t2] = 1;
}
int fa, fb;
cin>>fa>>fb;
for(int i = 1; i <= n; i++) {
for(int j = 1; j <= n; j++) {
for(int k = 1; k <= n; k++) {
if(a[i][j] && a[k][i])
a[k][j] = 1;
}
}
}
if(a[fa][fb] == 1)
cout<<"Yes!!!"<<endl;
else
cout<<"No!!!"<<endl;
}
return 0;
}
演算法運用的是floyd-warshall
查了一下,這個演算法時間複雜度O(n³),改用快一點的方法吧