标签:and ... plm size air define memset span std
Time Limit: 2000MS | Memory Limit: 30000K | |
Total Submissions: 5357 | Accepted: 2630 | |
Case Time Limit: 1000MS |
Description
Input
Output
Sample Input
7 6 1 6 13 E 6 3 9 E 3 5 7 S 4 1 3 N 2 4 20 W 4 7 2 S
Sample Output
52
Hint
Source
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<cmath> 5 #define lli long long int 6 using namespace std; 7 const int MAXN=100001; 8 void read(int &n) 9 { 10 char c=‘+‘;int x=0;bool flag=0; 11 while(c<‘0‘||c>‘9‘){c=getchar();if(c==‘-‘)flag=1;} 12 while(c>=‘0‘&&c<=‘9‘) 13 x=(x<<1)+(x<<3)+c-48,c=getchar(); 14 flag==1?n=-x:n=x; 15 } 16 struct node 17 { 18 int u,v,w,nxt; 19 }edge[MAXN]; 20 int head[MAXN]; 21 int num=1; 22 int n,m; 23 void add_edge(int x,int y,int z) 24 { 25 edge[num].u=x; 26 edge[num].v=y; 27 edge[num].w=z; 28 edge[num].nxt=head[x]; 29 head[x]=num++; 30 } 31 int dp[MAXN]; 32 int ans=0; 33 int ed=0; 34 void dfs(int u,int fa,int now) 35 { 36 if(now>ans) 37 { 38 ans=now; 39 ed=u; 40 } 41 for(int i=head[u];i!=-1;i=edge[i].nxt) 42 { 43 if(edge[i].v!=fa) 44 dfs(edge[i].v,u,now+edge[i].w); 45 } 46 } 47 int main() 48 { 49 read(n);read(m); 50 memset(head,-1,sizeof(head)); 51 for(int i=1;i<=m;i++) 52 { 53 int x,y,z;char c; 54 read(x);read(y);read(z); 55 cin>>c; 56 add_edge(x,y,z); 57 add_edge(y,x,z); 58 } 59 dfs(1,0,0); 60 dfs(ed,0,0); 61 printf("%d",ans); 62 return 0; 63 }
标签:and ... plm size air define memset span std
原文地址:http://www.cnblogs.com/zwfymqz/p/7196744.html