附加题用全排列暴力做出来了。。。
void Swap(int &a, int &b)
{
	int temp = a;
	a = b;
	b = temp;
}

void Permutation(vector<int> &vec, int start, int end, vector<vector<int>> &vecBig)
{
	if(start == end)
	{
		vecBig.push_back(vec);
	}
	else
	{
		for(int i = start; i<= end; ++i)
		{
			Swap(vec[i], vec[start]);
			Permutation(vec, start+1, end, vecBig);
			Swap(vec[i], vec[start]);   
		}
	}
}

int main()
{
	int n;
	cin>>n;
	vector<vector<int>> vecBig;
	for(int i = 0; i<=n; ++i)
	{
		vector<int> vecTemp;
		string str;
		getline(cin, str);
		for(int j = 0; j< str.size(); ++j)
		{
			if(str[j] == ',')
				str[j] = ' ';
		}
		istringstream ss(str);
		int num;
		while(ss>>num)
		{
			vecTemp.push_back(num);
		}
		if(i!= 0)
		{
			vecBig.push_back(vecTemp);
		}
		
	}
	vector<int> vect;
	for(int i = 0; i< n; ++i)
	{
		vect.push_back(i);
	}
	vector<vector<int>> vec;
	Permutation(vect, 0, n-1, vec);
	int min = 99999;
	for(int i = 0; i< vec.size(); ++i)
	{
		int curMid = 0;
		vector<int> vect = vec[i];
		int pre = vect[0];
		for(int j = 1; j<vect.size(); ++j)
		{
			int cur = vect[j];
			curMid +=vecBig[pre][cur];
			pre = cur;
		}
		if(curMid<min)
			min = curMid;
	}
	cout<<min<<endl;

}