• L24 最短工期 (天梯赛)


    比赛的时候没有把题目读清楚 导致这么简单的一道拓扑排序没做 属实有点遗憾

    跑一遍拓扑排序 最后统计每个任务如果有没法执行的就impossible

    否则就输出所有任务花费时间最长的那个

    点击查看代码
    #include<bits/stdc++.h>
    using namespace std;
    #define lowbit(x) x&(-x)
    #define ll long long
    const int maxn=105;
    int n,m,ans;
    int in[maxn],out[maxn];
    int dp[maxn],vis[maxn];
    queue<int>q;
    vector<int>Q[maxn],W[maxn];
    int main(){
    	cin>>n>>m;
    	for(int i=1;i<=m;i++){
    		int uu,vv,cc;
    		cin>>uu>>vv>>cc;
    		Q[uu].push_back(vv);
    		W[uu].push_back(cc);
    		in[vv]++;out[uu]++;
    		vis[vv]=1;
    	}
    	for(int i=0;i<n;i++)
    	if(!in[i])q.push(i);
        while(!q.empty()){
        	int u=q.front();
        	q.pop();
        	for(int i=0;i<Q[u].size();i++){
        		int to=Q[u][i],w=W[u][i];
        		dp[to]=max(dp[to],dp[u]+w);
        		ans=max(dp[to],ans);
        		in[to]--;
        		if(!in[to])q.push(to);
    		}
    	}
    	for(int i=0;i<n;i++)
    	if(vis[i]&&!dp[i]){
    		cout<<"Impossible"<<endl;
    		return 0;
    	}
    	if(ans)
    	cout<<ans<<endl;
        else cout<<"Impossible"<<endl;
    	return 0;
    }
    
    
  • 相关阅读:
    CF Round 594
    [转载]CSP-J/S 第一轮知识点选讲
    10.17 模拟赛
    10.16 模拟赛
    10.15模拟赛
    10.14模拟赛
    10.12 模拟赛
    Peaks Gym 100365H
    手写Bitset优化
    Sums gym100753M
  • 原文地址:https://www.cnblogs.com/wzxbeliever/p/16072444.html
Copyright © 2020-2023  润新知