• L3025 那就别担心了 (天梯赛)


    不得不吐槽一下出题人的数据真水 开始我的做法完全错了 但是居然能过19分

    开始我想拓扑排序 但发现只需要bfs走一遍就好 这个时候我还用的dp 肯定是不对的 同一个点可能会入队多次 而且dp值会被加多次

    实际上就是直接bfs到底就好 遍历每条路径 但是最后一个 点tle 为啥呢?

    这种情况下4——>8这条路径会走三次 于是就想办法只走一遍 考虑记忆化dfs 如果就是单纯的dfs和bfs复杂度是一样的会tle

    点击查看代码
    #include<bits/stdc++.h>
    using namespace std;
    #define lowbit(x) x&(-x)
    #define ll long long
    const int maxn=505; 
    int n,m,ans,flag=true;
    vector<int>Q[maxn];
    int vis[maxn];
    int dfs(int u){
    	if(vis[u])return vis[u];
    	int res=0;
    	for(int i=0;i<Q[u].size();i++){
    		int to=Q[u][i];
    		res+=dfs(to);
    	}
    	if(!res)flag=false;
    	return vis[u]=res;
    }
    int main(){
    	cin>>n>>m;
    	for(int i=1;i<=m;i++){
    		int uu,vv;
    		cin>>uu>>vv;
    		Q[uu].push_back(vv);
    	}
    	int S,T;
    	cin>>S>>T;
    	vis[T]=1;
    	cout<<dfs(S)<<" ";
    	if(flag)
    	cout<<"Yes"<<endl;
    	else cout<<"No"<<endl;
    	
         return 0;
    }
    
  • 相关阅读:
    hdu1915
    2014年9月28日 18:35:01
    洛谷—— P1122 最大子树和
    洛谷——P1103 书本整理
    洛谷—— P2049 魔术棋子
    UVA_1575
    洛谷—— P2424 约数和
    中文乱码问题
    JSP标签
    include指令
  • 原文地址:https://www.cnblogs.com/wzxbeliever/p/16073484.html
Copyright © 2020-2023  润新知