比赛 20150424 评测结果 AAAAEEEEWAWWWWE
题目名称 相遇时间 最终得分 33
用户昵称 KZNS 运行时间 2.937 s
代码语言 C++ 内存使用 0.29 MiB
提交时间 2015-04-24 09:43:49
显示代码纯文本
#include<fstream>
#include<vector>
#include<algorithm>
#include<queue>
using namespace std;
class poi{
public:
	int p,B,A;
	void push(int a,int b,int c){
		p=a;
		B=b;
		A=c;
	}
};
vector<poi>mp[102];

int main(){
	ifstream fi("meeting.in");
	ofstream fo("meeting.out");
	int n,m;
	fi>>n>>m;
	int a,b,c,d;
	poi poiu;
	for(int i=0;i<m;i++){
		fi>>a>>b>>c>>d;
		poiu.push(b,c,d);
		mp[a].push_back(poiu);
	}
	queue<int>ls;
	ls.push(1);
	bool mpuing[102]={false};
	vector<int>Bends[102],Aends[102];
	Bends[1].push_back(0);
	Aends[1].push_back(0);
	while(!ls.empty()){
		int u=ls.front();
		ls.pop();
		for(int i=0;i<mp[u].size();i++){
			poiu=mp[u][i];
			for(int j=0;j<Aends[u].size();j++)
				Aends[poiu.p].push_back(Aends[u][j]+poiu.A);
			for(int j=0;j<Bends[u].size();j++)
				Bends[poiu.p].push_back(Bends[u][j]+poiu.B);
			if(!mpuing[poiu.p]){
				ls.push(poiu.p);
				mpuing[poiu.p]=true;
			}
		}
	}
	vector<int>AE=Aends[n],BE=Bends[n];
	
	sort(AE.begin(),AE.end());
	sort(BE.begin(),BE.end());
	a=0;b=0;
	while(1){
		if(AE[a]==BE[b])
			goto end1;
		else{
			if(AE[a]<BE[b])
				a++;
			else
				b++;
		}
	}
	fo<<"IMPOSSIBLE"<<endl;
	end1:
	fo<<AE[a]<<endl;
	return 0;
	
	
}