#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=200010;
int n,m,ans,tot,d[N],e[N],nt[N],hd[N],val[N];
void build(int x,int y,int z){
tot++;
e[tot]=y;val[tot]=z;
nt[tot]=hd[x];hd[x]=tot;
}
int gcd(int x,int y){
if(!y)return x;
return gcd(y,x%y);
}
void dfs(int x,int now){
int i;
if(d[x]){
ans=gcd(ans,now-d[x]);
return;
}
d[x]=now;
for(i=hd[x];i;i=nt[i]) dfs(e[i],now+val[i]);
}
int main(){
int i,x,y;
scanf("%d%d",&n,&m);
for(i=1;i<=m;i++){
scanf("%d%d",&x,&y);
build(x,y,1);build(y,x,-1);
}
for(i=1;i<=n;i++) if(!d[i]) dfs(i,n+n);
printf("%d",ans?abs(ans):n);
}
2148. Count Elements With Strictly Smaller and Greater Elements | 2149. Rearrange Array Elements by Sign |
2150. Find All Lonely Numbers in the Array | 2151. Maximum Good People Based on Statements |
2144. Minimum Cost of Buying Candies With Discount | Non empty subsets |
1630A - And Matching | 1630B - Range and Partition |
1630C - Paint the Middle | 1630D - Flipping Range |
1328A - Divisibility Problem | 339A - Helpful Maths |
4A - Watermelon | 476A - Dreamoon and Stairs |
1409A - Yet Another Two Integers Problem | 977A - Wrong Subtraction |
263A - Beautiful Matrix | 180C - Letter |
151A - Soft Drinking | 1352A - Sum of Round Numbers |
281A - Word Capitalization | 1646A - Square Counting |
266A - Stones on the Table | 61A - Ultra-Fast Mathematician |
148A - Insomnia cure | 1650A - Deletions of Two Adjacent Letters |
1512A - Spy Detected | 282A - Bit++ |
69A - Young Physicist | 1651A - Playoff |