PTA L2-036 网红点打卡攻略 (25 分)

PTA L2-036 网红点打卡攻略 (25 分)

跟着要求模拟就好,判断能不能做到从家里出发,在每个网红点打卡仅一次,且能回到家里。
#include
using namespace std;

const int N = 210;
int g[N][N];
bool st[N];

int main()
{
	int n,m;cin>>n>>m;
	memset(g,0x3f,sizeof g);
	for(int i=1;i<=m;i++)
	{
		int a,b,c;cin>>a>>b>>c;
		g[a][b]=g[b][a]=c;
	}
	
	int k;cin>>k;
	int cnt=0,pos=0,mn=0x3f3f3f3f;
	for(int i=1;i<=k;i++)
	{
		memset(st,0,sizeof st);
		int nn;cin>>nn;
		bool ok=0;
		
		if(nn!=n) ok=1;
		int la=0,ans=0;
		for(int j=1;j<=nn;j++)
		{
			int v;cin>>v;
			if(!st[v] && g[la][v]!=0x3f3f3f3f)
			{
				st[v]=1;
				ans+=g[la][v];
				la=v;
			}
			else ok=1;
		}
		
		if(g[la][0]!=0x3f3f3f3f) ans+=g[la][0];
		else ok=1;
		
		if(ok) continue;
		else
		{
			if(ans<mn)
			{
				mn=ans;
				pos=i;
			}
			cnt++;
		}
	}
	cout<<cnt<<endl<<pos<<" "<<mn;
	
	return 0;
}

你可能感兴趣的:(#,STL容器,算法,c++,图论)