QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#673166#4992. Enigmatic EnumerationUZINGRE 0ms0kbC++141.5kb2024-10-24 20:52:392024-10-24 20:52:40

Judging History

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

  • [2024-10-24 20:52:40]
  • 评测
  • 测评结果:RE
  • 用时:0ms
  • 内存:0kb
  • [2024-10-24 20:52:39]
  • 提交

answer

#include<bits/stdc++.h>
#define min(x,y) (x<y?x:y)
#pragma GCC optimize(2,3,"Ofast","inline")
using namespace std;
#define getchar()(p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++)
char buf[1<<21],*p1=buf,*p2=buf;
inline int read()
{
    char c=getchar();int x=0;bool f=0;
    for(;!isdigit(c);c=getchar())f^=!(c^45);
    for(;isdigit(c);c=getchar())x=(x<<1)+(x<<3)+(c^48);
    if(f)x=-x;return x;
}
const int N=6010;
int n,m,mi=1e9,ans,cnt;
int f[N],dis[N],x[N],y[N];
vector<pair<int,int>>v[N];
queue<int>q;
inline void bfs(int id)
{
	for(int i=1;i<=n;i++)
		dis[i]=-1,f[i]=0;
	q.push(x[id]),dis[x[id]]=0,f[x[id]]=1;
	while(!q.empty())
	{
		int x=q.front();
		q.pop();
		for(auto k:v[x])
		{
			int i=k.first,j=k.second;
			if(j==id)continue;
			if(dis[i]==-1)dis[i]=dis[x]+1,f[i]+=f[x],q.push(i);
			else if(dis[x]+1==dis[i])f[i]+=f[x];
		}
	}
	if(dis[y[id]]==-1)return ;
	if(dis[y[id]]<mi)mi=dis[y[id]],ans=f[y[id]];
	else if(dis[y[id]]==mi)ans+=f[y[id]];
}
int main()
{
//	freopen("sample2.in","r",stdin);
	freopen("cycre.in","r",stdin);
	freopen("cycre.out","w",stdout);
	n=read(),m=read();
	for(int i=1;i<=m;i++)
	{
		x[i]=read(),y[i]=read();
		v[x[i]].push_back({y[i],i});
		v[y[i]].push_back({x[i],i});
	}
	for(int i=1;i<=m;i++)
		bfs(i);
//	assert(mp[mi]%(mi*2)==0);
//	cout<<mp[mi]<<' '<<mi<<endl;
//	cout<<mi;
	cout<<ans/(mi+1);
	return 0;
}
/*
6 9
1 2
2 4
1 3
3 4
3 5
4 6
5 6
1 5
2 6
*/

详细

Test #1:

score: 0
Dangerous Syscalls

input:

4 4
1 2
2 3
3 4
4 1

output:


result: