题目链接
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<vector>
#include<set>
#include<map>
#include<queue>
using namespace std;
#define maxn 10005
#define ll long long
#define pi acos(-1.0)
#define inf 0x3f3f3f3f
int in[maxn],ant[maxn];
vector<int>vec[maxn];
vector<int >ans;
queue<int>qu;
int main()
{
int n,m,a,b,sum;
while(~scanf("%d%d",&n,&m))
{
if(n==0)break;
for(int i=1;i<=n;i++)
{
in[i]=0;
vec[i].clear();
}
ans.clear();
sum=0;
while(!qu.empty())qu.pop();
for(int i=0;i<m;i++)
{
scanf("%d%d",&a,&b);
vec[b].push_back(a);
in[a]++;
}
for(int i=1;i<=n;i++)
{
if(!in[i])
{
qu.push(i);
in[i]--;
ant[i]=0;
}
}
while(!qu.empty())
{
int u=qu.front();
qu.pop();
ans.push_back(u);
for(int i=0;i<vec[u].size();i++)
{
in[vec[u][i]]--;
if(!in[vec[u][i]])
{
qu.push(vec[u][i]);
ant[vec[u][i]]=ant[u]+1;
in[vec[u][i]]--;
}
}
}
if(ans.size()!=n)printf("-1\n");
else {
for(int i=1;i<=n;i++)
sum+=888+ant[i];
printf("%d\n",sum);
}
}
}