QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#326297#1359. Setting MapsC1942huangjiaxuWA 1ms3956kbC++141.6kb2024-02-12 19:57:552024-02-12 19:57:55

Judging History

你现在查看的是最新测评结果

  • [2024-02-12 19:57:55]
  • 评测
  • 测评结果:WA
  • 用时:1ms
  • 内存:3956kb
  • [2024-02-12 19:57:55]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
const int N=1e4+5,M=1e5+5,inf=2e9+7;
int n,m,k,s,t,S,T,maxflow;
int hd[N],d[N],cur[N],w[2*M],to[2*M],nx[2*M],num=1;
bool vis[N];
void add(int x,int y,int z){
	nx[++num]=hd[x],hd[x]=num,to[num]=y,w[num]=z;
	nx[++num]=hd[y],hd[y]=num,to[num]=x,w[num]=0;
}
bool bfs(){
	queue<int>q;
	for(int i=1;i<=T;++i)d[i]=0;
	d[S]=1,q.push(S);
	while(!q.empty()){
		int u=q.front();
		q.pop();
		for(int i=hd[u],v;v=to[i],i;i=nx[i])if(w[i]&&!d[v]){
			d[v]=d[u]+1;
			if(v==T)return true;
			q.push(v);
		}
	}
	return false;
}
int dinic(int nw,int flow){
	if(nw==T)return flow;
	int rest=flow,k;
	for(int &i=cur[nw];i;i=nx[i])if(w[i]&&d[to[i]]==d[nw]+1){
		k=dinic(to[i],min(w[i],rest));
		if(!k)d[to[i]]=0;
		w[i]-=k,w[i^1]+=k,rest-=k;
		if(!rest)return flow;
	}
	return flow-rest;
}
void dfs(int x){
	vis[x]=true;
	for(int i=hd[x],v;v=to[i],i;i=nx[i])if(!vis[v]&&w[i])dfs(v);
}
int main(){
	scanf("%d%d%d%d%d",&n,&m,&k,&s,&t);
	S=k*n*2+1,T=S+1;
	for(int i=1,c;i<=n;++i){
		scanf("%d",&c);
		for(int j=1;j<k;++j)add(2*n*(j-1)+2*i-1,2*n*j+2*i,inf);
		for(int j=0;j<k;++j)add(2*n*j+2*i-1,2*n*j+2*i,c);
	}
	for(int i=1,x,y;i<=m;++i){
		scanf("%d%d",&x,&y);
		for(int j=0;j<k;++j)add(2*n*j+2*x,2*n*j+2*y-1,inf);
	}
	add(S,2*s-1,inf);
	for(int i=0;i<k;++i)add(2*n*i+2*t,T,inf);
	while(bfs()){
		for(int i=1;i<=T;++i)cur[i]=hd[i];
		maxflow+=dinic(S,inf);
	}
	if(maxflow>=inf)return puts("-1"),0;
	dfs(S);
	vector<int>tmp;
	for(int i=1;i<=n;++i)for(int j=0;j<k;++j)if(vis[2*n*j+2*i-1]!=vis[2*n*j+2*i])tmp.push_back(i);
	printf("%d\n",tmp.size());
	for(auto v:tmp)printf("%d ",v);
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 1ms
memory: 3956kb

input:

3 2 5
1 3
1 60 35
1 2
2 3

output:

-1

result:

ok answer = IMPOSSIBLE

Test #2:

score: 0
Accepted
time: 1ms
memory: 3744kb

input:

7 11 1
1 7
100 5 7 16 11 12 100
1 2
1 3
1 4
1 5
2 3
2 6
3 6
4 3
4 7
5 7
6 7

output:

4
2 3 4 5 

result:

ok answer = 39

Test #3:

score: -100
Wrong Answer
time: 1ms
memory: 3780kb

input:

11 17 2
1 11
1000 10 10 10 10 10 10 10 10 10 1000
1 2
1 3
1 4
1 5
1 6
2 7
3 7
4 7
5 8
6 8
7 8
7 9
7 10
8 9
8 11
9 11
10 11

output:

7
1 5 6 7 8 9 10 

result:

wrong answer User answer is not optimal; judge: 60, user: 1060