QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#673166 | #4992. Enigmatic Enumeration | UZING | RE | 0ms | 0kb | C++14 | 1.5kb | 2024-10-24 20:52:39 | 2024-10-24 20:52:40 |
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