使用DFS出现超时,改成bfs
DFS
#include#include #include using namespace std;int n;int l;int i,j;int m,k;int follower[1001][1001];vector user_list[1001];set user_s;void queryU(int a,int depth){ if(depth==l){ return ; } for(int i=0;i >n>>l; int a; for(i=1;i<=n;i++){ cin>>m; for(j=0;j >a; user_list[a].push_back(i); } } cin>>k; int sum; for(i=0;i >a; user_s.clear(); user_s.insert(a); queryU(a,0); cout< <
bfs
最后一个测试用例一直MLE,后来用指针优化,就报超时了。
后来参考 https://www.zhihu.com/question/28264519,把队列删除语句省掉,set省掉,终于AC了!
#include#include #include using namespace std;int n;int l;int i,j;int m,k;vector user_list[1010];vector que;int v[1005];int main(){ cin>>n>>l; int a; for(i=1;i<=n;i++){ cin>>m; for(j=0;j >a; user_list[a].push_back(i); } } cin>>k; for(i=1;i<=k;i++){ cin>>a; v[a]=i; int depth=0; que.clear(); que.push_back(a); int levelSize=0; int count=1; for(int z=0;z