码迷,mamicode.com
首页 > 其他好文 > 详细

HZNU Training 23 for Zhejiang Provincial Competition 2020

时间:2020-04-22 00:02:10      阅读:67      评论:0      收藏:0      [点我收藏+]

标签:turn   cout   use   hdu   ret   display   nbsp   contest   ack   

 拓扑排序,从上往下回溯,挺好奇差分约束为啥就不对。拓扑排序有明显的优先级。

技术图片技术图片
#include<bits/stdc++.h>
using namespace std;
#define pb push_back
typedef long long ll;
const int inf=0x3f3f3f3f;
typedef long long ll;
typedef double db;
const int N=1e4+50;
vector<int>e[N];
int n,m;
int in[N],a[N];
int topo(){
    int cnt=0;
    queue<int>Q;
    for(int i=1;i<=n;i++)if(in[i]==0)cnt++,Q.push(i);
    while(!Q.empty()){
        int u=Q.front();Q.pop();
        for(int i=0;i<e[u].size();i++){
            int v=e[u][i];--in[v];
            if(!in[v]){
                Q.push(v),cnt++;
                a[v]=max(a[v],a[u]+1);

            }
        }
    }
    if(cnt<n)return -1;
    int sum=0;
    for(int i=1;i<=n;i++)sum+=888+a[i];
    return sum;
}
int main(){

    while(~scanf("%d %d",&n,&m)){
    memset(in,0,sizeof in);
    memset(a,0,sizeof a);
    for(int i=1;i<=n;i++)e[i].clear();
    for(int i=1,u,v;i<=m;i++){
        scanf("%d %d",&u,&v);
        e[v].pb(u);in[u]++;
    }    
    cout<<topo()<<endl;
    }
    // system("pause");
    return 0;
}
View Code

G - G

 HDU - 3635 

带权并查集

 

HZNU Training 23 for Zhejiang Provincial Competition 2020

标签:turn   cout   use   hdu   ret   display   nbsp   contest   ack   

原文地址:https://www.cnblogs.com/littlerita/p/12748812.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!