Submission #8002355


Source Code Expand

#include<bits/stdc++.h>
using namespace std;

#define int long long

#define rep(i,n) for(int i=0;i<(n);i++)
#define pb push_back
#define all(v) (v).begin(),(v).end()
#define fi first
#define se second
typedef vector<int>vint;
typedef pair<int,int>pint;
typedef vector<pint>vpint;

template<typename A,typename B>inline void chmin(A &a,B b){if(a>b)a=b;}
template<typename A,typename B>inline void chmax(A &a,B b){if(a<b)a=b;}

template<class A,class B>
ostream& operator<<(ostream& ost,const pair<A,B>&p){
	ost<<"{"<<p.first<<","<<p.second<<"}";
	return ost;
}

template<class T>
ostream& operator<<(ostream& ost,const vector<T>&v){
	ost<<"{";
	for(int i=0;i<v.size();i++){
		if(i)ost<<",";
		ost<<v[i];
	}
	ost<<"}";
	return ost;
}

struct PrimalDual{
    using F=long long;
    static const F INF;
    
    struct Edge{
        int to;
        F cap,cost;
        int rev;
        Edge(int to,F cap,F cost,int rev):to(to),cap(cap),cost(cost),rev(rev){}
    };
    
    int n;
    vector<vector<Edge>>G;

    PrimalDual(int n):n(n),G(n){}

    void addEdge(int from,int to,F cap,F cost){
        G[from].push_back(Edge(to,cap,cost,G[to].size()));
        G[to].push_back(Edge(from,0,-cost,G[from].size()-1));
    }


    F minCostFlow(int s,int t,F f){
        F cur=0;

        vector<F>h(n);
        vector<int>prevv(n,-1),preve(n,-1);
        vector<F>dist(n);
        priority_queue<pair<F,int>,vector<pair<F,int>>,greater<pair<F,int>>>que;
            
        while(f>0){
            fill(dist.begin(),dist.end(),INF);
            dist[s]=0;
            que.emplace(0,s); 
            while(que.size()){
                F d;
                int v;
                tie(d,v)=que.top();
                que.pop();
                if(dist[v]<d)continue;
                for(int i=0;i<G[v].size();i++){
                    Edge &e=G[v][i];
                    F nd=dist[v]+e.cost+h[v]-h[e.to];
                    if(e.cap>0&&dist[e.to]>nd){
                        dist[e.to]=nd;
                        prevv[e.to]=v;preve[e.to]=i;
                        que.emplace(nd,e.to);
                    }
                }
            }
            if(dist[t]==INF)return INF;
            for(int v=0;v<n;v++)h[v]+=dist[v];
            F nf=f;
            for(int v=t;v!=s;v=prevv[v]){
                nf=min(nf,G[prevv[v]][preve[v]].cap);
            }
            f-=nf;
            cur+=nf*h[t];
            for(int v=t;v!=s;v=prevv[v]){
                Edge &e=G[prevv[v]][preve[v]];
                e.cap-=nf;
                G[v][e.rev].cap+=nf;
            }
        }
        return cur;
    }
};
const PrimalDual::F PrimalDual::INF=1ll<<50;

signed main(){
    int N,M,D;
    scanf("%lld%lld%lld",&N,&M,&D);
    PrimalDual pd(N+M+D+2);
    int src=N+M+D,snk=N+M+D+1;

    rep(i,M){
        int c,s,k;
        scanf("%lld%lld%lld",&c,&s,&k);
        s--;
        pd.addEdge(N+M+s,N+i,1,0);
        rep(j,k){
            int a;scanf("%lld",&a);
            a--;
            pd.addEdge(N+i,a,1,c);
        }
    }

    rep(i,D){
        int b;scanf("%lld",&b);
        pd.addEdge(src,N+M+i,b,0);
    }

    rep(i,N)pd.addEdge(i,snk,1,0);
    int tmp=pd.minCostFlow(src,snk,N);
    if(tmp==PrimalDual::INF){
        puts("-1");
    }
    else{
        printf("%lld\n",tmp);
    }
    return 0;
}

Submission Info

Submission Time
Task J - きたまさの逆襲
User latte0119
Language C++14 (GCC 5.4.1)
Score 300
Code Size 3434 Byte
Status AC
Exec Time 31 ms
Memory 1024 KB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:106:35: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
     scanf("%lld%lld%lld",&N,&M,&D);
                                   ^
./Main.cpp:112:39: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
         scanf("%lld%lld%lld",&c,&s,&k);
                                       ^
./Main.cpp:116:35: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
             int a;scanf("%lld",&a);
                                   ^
./Main.cpp:123:31: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
         int b;scanf("%lld",&b);
                               ^

Judge Result

Set Name Set 01 Set 02
Score / Max Score 50 / 50 250 / 250
Status
AC × 36
AC × 95
Set Name Test Cases
Set 01 00_smallest.txt, 01_small_0.txt, 01_small_1.txt, 01_small_10.txt, 01_small_11.txt, 01_small_12.txt, 01_small_13.txt, 01_small_14.txt, 01_small_15.txt, 01_small_16.txt, 01_small_17.txt, 01_small_18.txt, 01_small_19.txt, 01_small_2.txt, 01_small_3.txt, 01_small_4.txt, 01_small_5.txt, 01_small_6.txt, 01_small_7.txt, 01_small_8.txt, 01_small_9.txt, 02_large_0.txt, 02_large_1.txt, 02_large_2.txt, 02_large_3.txt, 02_large_4.txt, 02_large_5.txt, 02_large_6.txt, 02_large_7.txt, 02_large_8.txt, 02_large_9.txt, 09_largest_0.txt, 09_largest_1.txt, 09_largest_2.txt, 09_largest_3.txt, 09_largest_4.txt
Set 02 00_smallest.txt, 01_small_0.txt, 01_small_1.txt, 01_small_10.txt, 01_small_11.txt, 01_small_12.txt, 01_small_13.txt, 01_small_14.txt, 01_small_15.txt, 01_small_16.txt, 01_small_17.txt, 01_small_18.txt, 01_small_19.txt, 01_small_2.txt, 01_small_3.txt, 01_small_4.txt, 01_small_5.txt, 01_small_6.txt, 01_small_7.txt, 01_small_8.txt, 01_small_9.txt, 02_large_0.txt, 02_large_1.txt, 02_large_2.txt, 02_large_3.txt, 02_large_4.txt, 02_large_5.txt, 02_large_6.txt, 02_large_7.txt, 02_large_8.txt, 02_large_9.txt, 09_largest_0.txt, 09_largest_1.txt, 09_largest_2.txt, 09_largest_3.txt, 09_largest_4.txt, 10_smallest.txt, 11_small_0.txt, 11_small_1.txt, 11_small_10.txt, 11_small_11.txt, 11_small_12.txt, 11_small_13.txt, 11_small_14.txt, 11_small_15.txt, 11_small_16.txt, 11_small_17.txt, 11_small_18.txt, 11_small_19.txt, 11_small_2.txt, 11_small_20.txt, 11_small_21.txt, 11_small_22.txt, 11_small_23.txt, 11_small_24.txt, 11_small_25.txt, 11_small_26.txt, 11_small_27.txt, 11_small_28.txt, 11_small_29.txt, 11_small_3.txt, 11_small_4.txt, 11_small_5.txt, 11_small_6.txt, 11_small_7.txt, 11_small_8.txt, 11_small_9.txt, 12_large_0.txt, 12_large_1.txt, 12_large_10.txt, 12_large_11.txt, 12_large_12.txt, 12_large_13.txt, 12_large_14.txt, 12_large_15.txt, 12_large_16.txt, 12_large_17.txt, 12_large_18.txt, 12_large_19.txt, 12_large_2.txt, 12_large_3.txt, 12_large_4.txt, 12_large_5.txt, 12_large_6.txt, 12_large_7.txt, 12_large_8.txt, 12_large_9.txt, 19_largest_0.txt, 19_largest_1.txt, 19_largest_2.txt, 19_largest_3.txt, 19_largest_4.txt, sample1.txt, sample2.txt, sample3.txt
Case Name Status Exec Time Memory
00_smallest.txt AC 1 ms 256 KB
01_small_0.txt AC 1 ms 256 KB
01_small_1.txt AC 1 ms 256 KB
01_small_10.txt AC 1 ms 256 KB
01_small_11.txt AC 1 ms 256 KB
01_small_12.txt AC 1 ms 256 KB
01_small_13.txt AC 1 ms 256 KB
01_small_14.txt AC 1 ms 256 KB
01_small_15.txt AC 1 ms 256 KB
01_small_16.txt AC 1 ms 256 KB
01_small_17.txt AC 1 ms 256 KB
01_small_18.txt AC 1 ms 256 KB
01_small_19.txt AC 1 ms 256 KB
01_small_2.txt AC 1 ms 256 KB
01_small_3.txt AC 1 ms 256 KB
01_small_4.txt AC 1 ms 256 KB
01_small_5.txt AC 1 ms 256 KB
01_small_6.txt AC 1 ms 256 KB
01_small_7.txt AC 1 ms 256 KB
01_small_8.txt AC 1 ms 256 KB
01_small_9.txt AC 1 ms 256 KB
02_large_0.txt AC 7 ms 768 KB
02_large_1.txt AC 4 ms 384 KB
02_large_2.txt AC 13 ms 640 KB
02_large_3.txt AC 5 ms 768 KB
02_large_4.txt AC 7 ms 768 KB
02_large_5.txt AC 16 ms 768 KB
02_large_6.txt AC 15 ms 768 KB
02_large_7.txt AC 5 ms 640 KB
02_large_8.txt AC 3 ms 512 KB
02_large_9.txt AC 3 ms 640 KB
09_largest_0.txt AC 21 ms 896 KB
09_largest_1.txt AC 20 ms 896 KB
09_largest_2.txt AC 20 ms 896 KB
09_largest_3.txt AC 20 ms 896 KB
09_largest_4.txt AC 18 ms 896 KB
10_smallest.txt AC 1 ms 256 KB
11_small_0.txt AC 1 ms 256 KB
11_small_1.txt AC 1 ms 256 KB
11_small_10.txt AC 1 ms 256 KB
11_small_11.txt AC 1 ms 256 KB
11_small_12.txt AC 1 ms 256 KB
11_small_13.txt AC 1 ms 256 KB
11_small_14.txt AC 1 ms 256 KB
11_small_15.txt AC 1 ms 256 KB
11_small_16.txt AC 1 ms 256 KB
11_small_17.txt AC 1 ms 256 KB
11_small_18.txt AC 1 ms 256 KB
11_small_19.txt AC 1 ms 256 KB
11_small_2.txt AC 1 ms 256 KB
11_small_20.txt AC 1 ms 256 KB
11_small_21.txt AC 1 ms 256 KB
11_small_22.txt AC 1 ms 256 KB
11_small_23.txt AC 1 ms 256 KB
11_small_24.txt AC 1 ms 256 KB
11_small_25.txt AC 1 ms 256 KB
11_small_26.txt AC 1 ms 256 KB
11_small_27.txt AC 1 ms 256 KB
11_small_28.txt AC 1 ms 256 KB
11_small_29.txt AC 1 ms 256 KB
11_small_3.txt AC 1 ms 256 KB
11_small_4.txt AC 1 ms 256 KB
11_small_5.txt AC 1 ms 256 KB
11_small_6.txt AC 1 ms 256 KB
11_small_7.txt AC 1 ms 256 KB
11_small_8.txt AC 1 ms 256 KB
11_small_9.txt AC 1 ms 256 KB
12_large_0.txt AC 9 ms 640 KB
12_large_1.txt AC 1 ms 384 KB
12_large_10.txt AC 3 ms 640 KB
12_large_11.txt AC 14 ms 768 KB
12_large_12.txt AC 15 ms 768 KB
12_large_13.txt AC 6 ms 384 KB
12_large_14.txt AC 9 ms 512 KB
12_large_15.txt AC 17 ms 896 KB
12_large_16.txt AC 3 ms 640 KB
12_large_17.txt AC 17 ms 768 KB
12_large_18.txt AC 6 ms 640 KB
12_large_19.txt AC 10 ms 768 KB
12_large_2.txt AC 8 ms 640 KB
12_large_3.txt AC 13 ms 896 KB
12_large_4.txt AC 11 ms 640 KB
12_large_5.txt AC 2 ms 384 KB
12_large_6.txt AC 6 ms 768 KB
12_large_7.txt AC 7 ms 640 KB
12_large_8.txt AC 4 ms 384 KB
12_large_9.txt AC 7 ms 512 KB
19_largest_0.txt AC 31 ms 1024 KB
19_largest_1.txt AC 23 ms 896 KB
19_largest_2.txt AC 23 ms 896 KB
19_largest_3.txt AC 23 ms 896 KB
19_largest_4.txt AC 23 ms 896 KB
sample1.txt AC 1 ms 256 KB
sample2.txt AC 1 ms 256 KB
sample3.txt AC 1 ms 256 KB