记录编号 546387 评测结果 AAAAAAAAAA
题目名称 [HZOI 2016]奖学金 最终得分 100
用户昵称 Gravatar瑆の時間~無盡輪迴·林蔭 是否通过 通过
代码语言 C++ 运行时间 0.069 s
提交时间 2019-11-08 16:43:41 内存使用 1.47 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<vector>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
vector<pair<int,int> >b[12001];
int n,m,a1,a2,a3;
int C[12001],dis[12001],vis[12001]; 
bool SPFA()
{
	memset(dis,-0x3f3f3f3f,sizeof(dis));
	vis[0]=1;
	C[0]=1;
	dis[0]=0;
	priority_queue<pair<int,int> > q;
	q.push(make_pair(0,0));
	while(q.size())
	{
		int u=q.top().second;
		q.pop();
		vis[u]=0;
		for(int i=0;i<b[u].size();i++)
		{
			int to=b[u][i].first,v=b[u][i].second;
			if(dis[to]<dis[u]+v)
			{
				dis[to]=dis[u]+v;
				if(!vis[to])
				{
					C[to]++;
					if(C[to]>n)
					return 0;
					vis[to]=1;
					q.push(make_pair(dis[to],to));
				}
			}
		}
	}
	return 1;
}
int LINYIN()
{
	freopen("reward.in","r",stdin);
	freopen("reward.out","w",stdout);
	scanf("%d%d",&n,&m);
	for(int i=1;i<=m;i++)
	{
		scanf("%d%d",&a1,&a2);
		b[a2].push_back(make_pair(a1,1));
	}
	for(int i=1;i<=n;i++)
	{
		b[0].push_back(make_pair(i,0)); 
	}
	if(SPFA())
	{
		int ans=100*n;
		for(int i=1;i<=n;i++)
		{
			ans+=dis[i];
		}
		printf("%d\n",ans);
		return 0;
	}
	else
	{
		printf("impossible\n");
	}
	return 0;
}
int LWH=LINYIN();//ILOVEYOUFOREVER
int main()
{
	;
}